@blamnetwork/blf 1.0.0-beta.2 → 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.
Files changed (411) hide show
  1. package/README.md +1 -1
  2. package/dist/automapper/create_map.d.ts +5 -0
  3. package/dist/automapper/create_map.d.ts.map +1 -0
  4. package/dist/automapper/create_map.js +6 -0
  5. package/dist/automapper/create_mapper.d.ts +6 -0
  6. package/dist/automapper/create_mapper.d.ts.map +1 -0
  7. package/dist/automapper/create_mapper.js +9 -0
  8. package/dist/automapper/enum_by_name.d.ts +16 -0
  9. package/dist/automapper/enum_by_name.d.ts.map +1 -0
  10. package/dist/automapper/enum_by_name.js +50 -0
  11. package/dist/automapper/index.d.ts +7 -0
  12. package/dist/automapper/index.d.ts.map +1 -0
  13. package/dist/automapper/index.js +6 -0
  14. package/dist/automapper/stage3_metadata.d.ts +7 -0
  15. package/dist/automapper/stage3_metadata.d.ts.map +1 -0
  16. package/dist/automapper/stage3_metadata.js +38 -0
  17. package/dist/bitstream/enum.d.ts +5 -1
  18. package/dist/bitstream/enum.d.ts.map +1 -1
  19. package/dist/bitstream/enum.js +21 -1
  20. package/dist/bitstream/reader.d.ts.map +1 -1
  21. package/dist/bitstream/reader.js +3 -6
  22. package/dist/bitstream/writer.d.ts +2 -1
  23. package/dist/bitstream/writer.d.ts.map +1 -1
  24. package/dist/bitstream/writer.js +3 -2
  25. package/dist/blam/common/math/real_types.d.ts +19 -0
  26. package/dist/blam/common/math/real_types.d.ts.map +1 -0
  27. package/dist/blam/common/math/real_types.js +21 -0
  28. package/dist/blam/common/math/unit_vector_quantization.d.ts +6 -0
  29. package/dist/blam/common/math/unit_vector_quantization.d.ts.map +1 -0
  30. package/dist/blam/common/math/unit_vector_quantization.js +26 -0
  31. package/dist/blam/common/simulation/simulation_encoding.d.ts +7 -0
  32. package/dist/blam/common/simulation/simulation_encoding.d.ts.map +1 -0
  33. package/dist/blam/common/simulation/simulation_encoding.js +23 -0
  34. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_custom_variant.d.ts.map +1 -1
  35. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_custom_variant.js +272 -112
  36. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_custom_variant_au1_settings.d.ts.map +1 -1
  37. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_custom_variant_au1_settings.js +113 -28
  38. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_default.d.ts +7 -4
  39. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_default.d.ts.map +1 -1
  40. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_default.js +752 -279
  41. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_survival_variant.d.ts.map +1 -1
  42. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_survival_variant.js +485 -170
  43. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_traits.d.ts.map +1 -1
  44. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_traits.js +74 -14
  45. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_variant.d.ts +2 -1
  46. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_variant.d.ts.map +1 -1
  47. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_variant.js +153 -87
  48. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_player_traits.d.ts.map +1 -1
  49. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_player_traits.js +435 -140
  50. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_string_table.d.ts.map +1 -1
  51. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_string_table.js +206 -144
  52. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/game_engine_enums.d.ts.map +1 -1
  53. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/game_engine_enums.js +93 -23
  54. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_megalo_game_statistic.d.ts.map +1 -1
  55. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_megalo_game_statistic.js +81 -16
  56. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_megalogamengine_map_permissions.d.ts.map +1 -1
  57. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_megalogamengine_map_permissions.js +70 -15
  58. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_object_filter.d.ts.map +1 -1
  59. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_object_filter.js +108 -33
  60. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_trigger.d.ts.map +1 -1
  61. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_trigger.js +113 -33
  62. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_actions.d.ts +130 -26
  63. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_actions.d.ts.map +1 -1
  64. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_actions.js +3193 -1602
  65. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_conditions.d.ts.map +1 -1
  66. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_conditions.js +418 -208
  67. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_references.d.ts.map +1 -1
  68. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_references.js +744 -459
  69. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_text.d.ts.map +1 -1
  70. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_text.js +218 -98
  71. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_custom_game_engine_definition.d.ts +5 -4
  72. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_custom_game_engine_definition.d.ts.map +1 -1
  73. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_custom_game_engine_definition.js +242 -107
  74. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_game_engine_player_rating_parameters.d.ts.map +1 -1
  75. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_game_engine_player_rating_parameters.js +177 -52
  76. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_user_defined_option.d.ts.map +1 -1
  77. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_user_defined_option.js +187 -72
  78. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_variable_metadata.d.ts.map +1 -1
  79. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_variable_metadata.js +134 -66
  80. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_variant_variable.d.ts.map +1 -1
  81. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_variant_variable.js +138 -63
  82. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/math/real_math.d.ts +23 -0
  83. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/math/real_math.d.ts.map +1 -0
  84. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/math/real_math.js +110 -0
  85. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/memory/bitstream_extensions.d.ts +5 -0
  86. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/memory/bitstream_extensions.d.ts.map +1 -0
  87. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/memory/bitstream_extensions.js +39 -0
  88. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/index.d.ts +1 -0
  89. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/index.d.ts.map +1 -1
  90. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/index.js +1 -0
  91. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/scenario_map_variant.d.ts +104 -0
  92. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/scenario_map_variant.d.ts.map +1 -0
  93. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/scenario_map_variant.js +681 -0
  94. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/simulation/simulation_encoding.d.ts +5 -0
  95. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/simulation/simulation_encoding.d.ts.map +1 -0
  96. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/simulation/simulation_encoding.js +28 -0
  97. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_engine_custom_variant.d.ts.map +1 -0
  98. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_engine_custom_variant.js +285 -0
  99. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_engine_custom_variant_au1_settings.d.ts.map +1 -0
  100. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_engine_custom_variant_au1_settings.js +115 -0
  101. 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
  102. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_engine_default.d.ts.map +1 -0
  103. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_engine_default.js +765 -0
  104. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_engine_survival_variant.d.ts.map +1 -0
  105. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_engine_survival_variant.js +504 -0
  106. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_engine_traits.d.ts.map +1 -0
  107. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_engine_traits.js +76 -0
  108. 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
  109. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_variant.d.ts.map +1 -0
  110. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_variant.js +175 -0
  111. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_player_traits.d.ts.map +1 -0
  112. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_player_traits.js +437 -0
  113. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_string_table.d.ts.map +1 -0
  114. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_string_table.js +252 -0
  115. 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
  116. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/game_engine_enums.js +130 -0
  117. package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/index.d.ts.map +1 -1
  118. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/c_megalo_game_statistic.d.ts.map +1 -0
  119. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/c_megalo_game_statistic.js +83 -0
  120. 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
  121. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/c_megalogamengine_map_permissions.js +73 -0
  122. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/c_object_filter.d.ts.map +1 -0
  123. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/c_object_filter.js +114 -0
  124. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/c_trigger.d.ts.map +1 -0
  125. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/c_trigger.js +139 -0
  126. 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
  127. 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
  128. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_actions.d.ts.map +1 -0
  129. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_actions.js +3636 -0
  130. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_conditions.d.ts.map +1 -0
  131. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_conditions.js +436 -0
  132. 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
  133. 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
  134. 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
  135. 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
  136. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_references.d.ts.map +1 -0
  137. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_references.js +787 -0
  138. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_text.d.ts.map +1 -0
  139. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_text.js +239 -0
  140. 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
  141. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/s_custom_game_engine_definition.d.ts.map +1 -0
  142. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/s_custom_game_engine_definition.js +251 -0
  143. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/s_game_engine_player_rating_parameters.d.ts.map +1 -0
  144. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/s_game_engine_player_rating_parameters.js +179 -0
  145. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/s_user_defined_option.d.ts.map +1 -0
  146. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/s_user_defined_option.js +197 -0
  147. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/s_variable_metadata.d.ts.map +1 -0
  148. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/s_variable_metadata.js +153 -0
  149. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/s_variant_variable.d.ts.map +1 -0
  150. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/s_variant_variable.js +150 -0
  151. package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/index.d.ts.map +1 -1
  152. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/saved_games/index.d.ts +3 -0
  153. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/saved_games/index.d.ts.map +1 -0
  154. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/saved_games/index.js +2 -0
  155. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/saved_games/saved_game_files.d.ts +2 -0
  156. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/saved_games/saved_game_files.d.ts.map +1 -0
  157. package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/saved_games/saved_game_files.js +1 -0
  158. package/dist/blf_chunk.d.ts +2 -2
  159. package/dist/blf_chunk.d.ts.map +1 -1
  160. package/dist/blf_chunk.js +20 -15
  161. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/index.d.ts +1 -0
  162. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/index.d.ts.map +1 -1
  163. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/index.js +1 -0
  164. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_content_header.d.ts +1 -1
  165. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_content_header.d.ts.map +1 -1
  166. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_content_header.js +7 -7
  167. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_map_variant.d.ts +19 -0
  168. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_map_variant.d.ts.map +1 -0
  169. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_map_variant.js +106 -0
  170. package/dist/chunks/haloreach_mcc/v_untracked_25_08_16_1352/index.d.ts +6 -0
  171. package/dist/chunks/haloreach_mcc/v_untracked_25_08_16_1352/index.d.ts.map +1 -0
  172. package/dist/chunks/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/index.js +2 -1
  173. 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
  174. 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
  175. 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
  176. 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
  177. 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
  178. 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
  179. package/dist/chunks/mcc/s_blf_chunk_fileshare_metadata.d.ts +3 -3
  180. package/dist/chunks/mcc/s_blf_chunk_fileshare_metadata.d.ts.map +1 -1
  181. package/dist/chunks/mcc/s_blf_chunk_fileshare_metadata.js +3 -3
  182. package/dist/helpers/automap.d.ts +9 -0
  183. package/dist/helpers/automap.d.ts.map +1 -0
  184. package/dist/helpers/automap.js +34 -0
  185. package/dist/helpers/convert_reach_gametype.d.ts +12 -11
  186. package/dist/helpers/convert_reach_gametype.d.ts.map +1 -1
  187. package/dist/helpers/convert_reach_gametype.js +403 -115
  188. package/dist/helpers/game_variant_json.d.ts +19 -0
  189. package/dist/helpers/game_variant_json.d.ts.map +1 -0
  190. package/dist/helpers/game_variant_json.js +121 -0
  191. package/dist/helpers/index.d.ts +1 -1
  192. package/dist/helpers/index.d.ts.map +1 -1
  193. package/dist/helpers/index.js +1 -1
  194. package/dist/helpers/reach_gametype_automap.d.ts +10 -0
  195. package/dist/helpers/reach_gametype_automap.d.ts.map +1 -0
  196. package/dist/helpers/reach_gametype_automap.js +45 -0
  197. package/dist/helpers/reach_gametype_automapper.d.ts +5 -0
  198. package/dist/helpers/reach_gametype_automapper.d.ts.map +1 -0
  199. package/dist/helpers/reach_gametype_automapper.js +9 -0
  200. package/dist/helpers/reach_gametype_conversion_error.d.ts +11 -0
  201. package/dist/helpers/reach_gametype_conversion_error.d.ts.map +1 -0
  202. package/dist/helpers/reach_gametype_conversion_error.js +11 -0
  203. package/dist/types/static_array.d.ts +6 -0
  204. package/dist/types/static_array.d.ts.map +1 -0
  205. package/dist/types/static_array.js +3 -0
  206. package/dist/versions/haloreach/v12065_11_08_24_1738_tu1actual.d.ts +1 -0
  207. package/dist/versions/haloreach/v12065_11_08_24_1738_tu1actual.d.ts.map +1 -1
  208. package/dist/versions/haloreach/v12065_11_08_24_1738_tu1actual.js +1 -0
  209. package/dist/versions/haloreach_mcc/{v_untracked_25_08_19_1352.js → v_untracked_25_08_16_1352.d.ts} +5 -3
  210. 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
  211. package/dist/versions/haloreach_mcc/{v_untracked_25_08_19_1352.d.ts → v_untracked_25_08_16_1352.js} +4 -4
  212. package/dist/versions/mcc/v2025_08_16_178512_1_release.d.ts +4 -0
  213. package/dist/versions/mcc/v2025_08_16_178512_1_release.d.ts.map +1 -0
  214. package/dist/versions/mcc/v2025_08_16_178512_1_release.js +3 -0
  215. package/dist-cjs/automapper/create_map.js +9 -0
  216. package/dist-cjs/automapper/create_mapper.js +12 -0
  217. package/dist-cjs/automapper/enum_by_name.js +55 -0
  218. package/dist-cjs/automapper/index.js +20 -0
  219. package/dist-cjs/automapper/stage3_metadata.js +43 -0
  220. package/dist-cjs/bitstream/enum.js +25 -2
  221. package/dist-cjs/bitstream/reader.js +2 -5
  222. package/dist-cjs/bitstream/writer.js +3 -2
  223. package/dist-cjs/blam/common/math/real_types.js +27 -0
  224. package/dist-cjs/blam/common/math/unit_vector_quantization.js +29 -0
  225. package/dist-cjs/blam/common/simulation/simulation_encoding.js +26 -0
  226. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_custom_variant.js +271 -112
  227. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_custom_variant_au1_settings.js +114 -30
  228. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_default.js +743 -280
  229. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_survival_variant.js +480 -170
  230. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_traits.js +74 -15
  231. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_variant.js +152 -87
  232. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_player_traits.js +431 -142
  233. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_string_table.js +205 -145
  234. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/game_engine_enums.js +92 -23
  235. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_megalo_game_statistic.js +82 -18
  236. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_megalogamengine_map_permissions.js +70 -16
  237. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_object_filter.js +108 -34
  238. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_trigger.js +112 -33
  239. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_actions.js +3150 -1607
  240. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_conditions.js +413 -208
  241. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_references.js +735 -459
  242. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_text.js +216 -99
  243. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_custom_game_engine_definition.js +240 -106
  244. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_game_engine_player_rating_parameters.js +178 -54
  245. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_user_defined_option.js +186 -73
  246. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_variable_metadata.js +135 -68
  247. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_variant_variable.js +137 -63
  248. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/math/real_math.js +116 -0
  249. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/memory/bitstream_extensions.js +43 -0
  250. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/index.js +1 -0
  251. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/scenario_map_variant.js +687 -0
  252. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/simulation/simulation_encoding.js +32 -0
  253. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_engine_custom_variant.js +288 -0
  254. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_engine_custom_variant_au1_settings.js +118 -0
  255. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_engine_default.js +768 -0
  256. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_engine_survival_variant.js +507 -0
  257. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_engine_traits.js +79 -0
  258. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_variant.js +178 -0
  259. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_player_traits.js +440 -0
  260. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_string_table.js +255 -0
  261. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/game_engine_enums.js +133 -0
  262. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/c_megalo_game_statistic.js +86 -0
  263. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/c_megalogamengine_map_permissions.js +76 -0
  264. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/c_object_filter.js +117 -0
  265. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/c_trigger.js +142 -0
  266. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_actions.js +3640 -0
  267. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_conditions.js +439 -0
  268. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_references.js +793 -0
  269. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_text.js +242 -0
  270. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/s_custom_game_engine_definition.js +254 -0
  271. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/s_game_engine_player_rating_parameters.js +182 -0
  272. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/s_user_defined_option.js +200 -0
  273. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/s_variable_metadata.js +160 -0
  274. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/s_variant_variable.js +153 -0
  275. package/dist-cjs/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/saved_games/index.js +1 -0
  276. package/dist-cjs/{versions/mcc/v_25_08_16.js → blam/haloreach_mcc/v_untracked_25_08_16_1352/saved_games/saved_game_files.js} +1 -1
  277. package/dist-cjs/blf_chunk.js +20 -15
  278. package/dist-cjs/chunks/haloreach/v12065_11_08_24_1738_tu1actual/index.js +3 -1
  279. package/dist-cjs/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_content_header.js +7 -7
  280. package/dist-cjs/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_map_variant.js +109 -0
  281. package/dist-cjs/chunks/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/index.js +5 -2
  282. 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
  283. 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
  284. package/dist-cjs/chunks/mcc/s_blf_chunk_fileshare_metadata.js +3 -3
  285. package/dist-cjs/helpers/automap.js +40 -0
  286. package/dist-cjs/helpers/convert_reach_gametype.js +407 -117
  287. package/dist-cjs/helpers/game_variant_json.js +127 -0
  288. package/dist-cjs/helpers/index.js +2 -1
  289. package/dist-cjs/helpers/reach_gametype_automap.js +81 -0
  290. package/dist-cjs/helpers/reach_gametype_automapper.js +13 -0
  291. package/dist-cjs/helpers/reach_gametype_conversion_error.js +14 -0
  292. package/dist-cjs/types/static_array.js +6 -0
  293. package/dist-cjs/versions/haloreach/v12065_11_08_24_1738_tu1actual.js +1 -0
  294. package/dist-cjs/versions/haloreach_mcc/{v_untracked_25_08_19_1352.js → v_untracked_25_08_16_1352.js} +4 -3
  295. package/dist-cjs/versions/mcc/v2025_08_16_178512_1_release.js +20 -0
  296. package/package.json +5 -3
  297. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_custom_variant.d.ts.map +0 -1
  298. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_custom_variant.js +0 -125
  299. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_custom_variant_au1_settings.d.ts.map +0 -1
  300. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_custom_variant_au1_settings.js +0 -30
  301. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_default.d.ts.map +0 -1
  302. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_default.js +0 -292
  303. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_survival_variant.d.ts.map +0 -1
  304. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_survival_variant.js +0 -184
  305. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_traits.d.ts.map +0 -1
  306. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_traits.js +0 -16
  307. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_variant.d.ts.map +0 -1
  308. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_variant.js +0 -109
  309. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_player_traits.d.ts.map +0 -1
  310. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_player_traits.js +0 -142
  311. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_string_table.d.ts.map +0 -1
  312. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_string_table.js +0 -190
  313. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/game_engine_enums.js +0 -60
  314. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/c_megalo_game_statistic.d.ts.map +0 -1
  315. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/c_megalo_game_statistic.js +0 -18
  316. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/c_megalogamengine_map_permissions.js +0 -18
  317. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/c_object_filter.d.ts.map +0 -1
  318. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/c_object_filter.js +0 -39
  319. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/c_trigger.d.ts.map +0 -1
  320. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/c_trigger.js +0 -59
  321. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_actions.d.ts.map +0 -1
  322. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_actions.js +0 -1696
  323. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_conditions.d.ts.map +0 -1
  324. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_conditions.js +0 -226
  325. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_references.d.ts.map +0 -1
  326. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_references.js +0 -502
  327. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_text.d.ts.map +0 -1
  328. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_text.js +0 -119
  329. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_custom_game_engine_definition.d.ts.map +0 -1
  330. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_custom_game_engine_definition.js +0 -116
  331. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_game_engine_player_rating_parameters.d.ts.map +0 -1
  332. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_game_engine_player_rating_parameters.js +0 -54
  333. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_user_defined_option.d.ts.map +0 -1
  334. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_user_defined_option.js +0 -82
  335. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_variable_metadata.d.ts.map +0 -1
  336. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_variable_metadata.js +0 -85
  337. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_variant_variable.d.ts.map +0 -1
  338. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_variant_variable.js +0 -75
  339. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/saved_games/index.d.ts +0 -2
  340. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/saved_games/index.d.ts.map +0 -1
  341. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/saved_games/index.js +0 -1
  342. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/saved_games/saved_game_files.d.ts +0 -66
  343. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/saved_games/saved_game_files.d.ts.map +0 -1
  344. package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/saved_games/saved_game_files.js +0 -586
  345. package/dist/chunks/haloreach_mcc/v_untracked_25_08_19_1352/index.d.ts +0 -5
  346. package/dist/chunks/haloreach_mcc/v_untracked_25_08_19_1352/index.d.ts.map +0 -1
  347. package/dist/versions/mcc/v_25_08_16.d.ts +0 -2
  348. package/dist/versions/mcc/v_25_08_16.d.ts.map +0 -1
  349. package/dist/versions/mcc/v_25_08_16.js +0 -1
  350. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_custom_variant.js +0 -129
  351. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_custom_variant_au1_settings.js +0 -34
  352. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_default.js +0 -305
  353. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_survival_variant.js +0 -192
  354. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_traits.js +0 -20
  355. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_variant.js +0 -113
  356. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_player_traits.js +0 -151
  357. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_string_table.js +0 -195
  358. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/game_engine_enums.js +0 -64
  359. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/c_megalo_game_statistic.js +0 -22
  360. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/c_megalogamengine_map_permissions.js +0 -22
  361. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/c_object_filter.js +0 -43
  362. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/c_trigger.js +0 -63
  363. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_actions.js +0 -1748
  364. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_conditions.js +0 -234
  365. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_references.js +0 -517
  366. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_text.js +0 -125
  367. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_custom_game_engine_definition.js +0 -120
  368. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_game_engine_player_rating_parameters.js +0 -58
  369. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_user_defined_option.js +0 -87
  370. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_variable_metadata.js +0 -93
  371. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_variant_variable.js +0 -79
  372. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/saved_games/saved_game_files.js +0 -591
  373. /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
  374. /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
  375. /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
  376. /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
  377. /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
  378. /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
  379. /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
  380. /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/index.d.ts +0 -0
  381. /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/index.js +0 -0
  382. /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
  383. /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
  384. /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
  385. /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
  386. /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/index.d.ts +0 -0
  387. /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/index.js +0 -0
  388. /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
  389. /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
  390. /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
  391. /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
  392. /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
  393. /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
  394. /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
  395. /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
  396. /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
  397. /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
  398. /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
  399. /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
  400. /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
  401. /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
  402. /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
  403. /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/index.d.ts +0 -0
  404. /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/index.js +0 -0
  405. /package/dist-cjs/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/index.js +0 -0
  406. /package/dist-cjs/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/index.js +0 -0
  407. /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
  408. /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
  409. /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
  410. /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
  411. /package/dist-cjs/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/index.js +0 -0
@@ -1,56 +1,55 @@
1
1
  "use strict";
2
2
  /**
3
- * Convert game variants between Halo Reach TU1 and MCC builds.
3
+ * Convert game variants between Halo: Reach TU1 (Xbox 360) and MCC.
4
4
  *
5
- * JSON-clone the variant, reject MCC-only megalo features, remap what moved
6
- * between builds, then write the four top-level fields onto `to`.
5
+ * Cross-build conversion uses AutoMapper (`@automapper/core` + `@automapper/classes`)
6
+ * with profiles registered from the source instance graph, then applies build-specific
7
+ * remaps in place on the mapped target instances.
7
8
  *
8
- * Differences handled here:
9
- * - MCC-only: temporary explicit refs, `<<=`, `>>=`
10
- * - `set_to_absolute` exists in both builds but moved (TU1 = 10, MCC = 12)
11
- * - Survival: unrelated fields — MCC→TU1 sets `m_campaign_difficulty_level` to 1;
12
- * TU1→MCC sets `m_encoding_version` to 2; `m_additional_flags` only on MCC
9
+ * TU1 MCC is always possible for supported variant kinds (custom / survival).
10
+ * MCC → TU1 rejects MCC-only megalo features and fails when temporary object,
11
+ * player, or team references cannot be mapped onto free global slots.
13
12
  */
14
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.e_reach_gametype_conversion_error = void 0;
15
15
  exports.convert_reach_gametype = convert_reach_gametype;
16
16
  const c_game_variant_1 = require("../blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_variant");
17
- const megalogamengine_actions_1 = require("../blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_actions");
18
- const c_game_variant_2 = require("../blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_variant");
19
- const megalogamengine_actions_2 = require("../blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_actions");
20
- const megalogamengine_explicit_object_1 = require("../blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_explicit_object");
21
- const megalogamengine_explicit_player_1 = require("../blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_explicit_player");
22
- const megalogamengine_explicit_team_1 = require("../blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_explicit_team");
17
+ const megalogamengine_explicit_object_1 = require("../blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_explicit_object");
18
+ const megalogamengine_explicit_player_1 = require("../blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_explicit_player");
19
+ const megalogamengine_explicit_team_1 = require("../blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_explicit_team");
20
+ const megalogamengine_references_1 = require("../blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_references");
21
+ const c_game_variant_2 = require("../blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_variant");
22
+ const megalogamengine_actions_1 = require("../blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_actions");
23
+ const megalogamengine_explicit_object_2 = require("../blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_explicit_object");
24
+ const megalogamengine_explicit_player_2 = require("../blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_explicit_player");
25
+ const megalogamengine_explicit_team_2 = require("../blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_explicit_team");
26
+ const megalogamengine_references_2 = require("../blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_references");
23
27
  const error_1 = require("../error");
24
- /** MCC math ops with no TU1 equivalent (`<<=`, `>>=`). */
28
+ const reach_gametype_automap_1 = require("./reach_gametype_automap");
29
+ const reach_gametype_automapper_1 = require("./reach_gametype_automapper");
30
+ const reach_gametype_conversion_error_1 = require("./reach_gametype_conversion_error");
31
+ var reach_gametype_conversion_error_2 = require("./reach_gametype_conversion_error");
32
+ Object.defineProperty(exports, "e_reach_gametype_conversion_error", { enumerable: true, get: function () { return reach_gametype_conversion_error_2.e_reach_gametype_conversion_error; } });
25
33
  const MCC_ONLY_MATH_OPS = [
26
- megalogamengine_actions_2.e_math_operation.shift_left_with,
27
- megalogamengine_actions_2.e_math_operation.shift_right_with,
34
+ megalogamengine_actions_1.e_math_operation.shift_left_with,
35
+ megalogamengine_actions_1.e_math_operation.shift_right_with,
36
+ ];
37
+ const MCC_ONLY_ACTION_TYPES = [
38
+ megalogamengine_actions_1.e_action_type.begin,
39
+ megalogamengine_actions_1.e_action_type.hs_function_call,
40
+ megalogamengine_actions_1.e_action_type.get_button_time,
41
+ megalogamengine_actions_1.e_action_type.team_set_vehicle_spawning,
42
+ megalogamengine_actions_1.e_action_type.player_set_vehicle_spawning,
43
+ megalogamengine_actions_1.e_action_type.set_player_respawn_vehicle,
44
+ megalogamengine_actions_1.e_action_type.set_team_respawn_vehicle,
45
+ megalogamengine_actions_1.e_action_type.hide_object,
28
46
  ];
29
- /** TU1 survival `m_campaign_difficulty_level` when converting from MCC. */
30
47
  const TU1_SURVIVAL_CAMPAIGN_DIFFICULTY = 1;
31
- /** MCC survival `m_encoding_version` when converting from TU1. */
32
48
  const MCC_SURVIVAL_ENCODING_VERSION = 2;
33
- // ---------------------------------------------------------------------------
34
- // JSON helpers
35
- // ---------------------------------------------------------------------------
36
- const JSON_BIGINT_TAG = "__bigint__";
37
- function json_clone(value) {
38
- return JSON.parse(JSON.stringify(value, (_key, v) => typeof v === "bigint" ? { [JSON_BIGINT_TAG]: v.toString() } : v), (_key, v) => v !== null &&
39
- typeof v === "object" &&
40
- JSON_BIGINT_TAG in v &&
41
- typeof v[JSON_BIGINT_TAG] === "string"
42
- ? BigInt(v[JSON_BIGINT_TAG])
43
- : v);
44
- }
45
- function write_game_variant_json(to, data) {
46
- to.m_game_engine = data.m_game_engine;
47
- to.m_campaign_variant = data.m_campaign_variant;
48
- to.m_custom_variant = data.m_custom_variant;
49
- to.m_survival_variant = data.m_survival_variant;
50
- }
51
- // ---------------------------------------------------------------------------
52
- // Tree walk
53
- // ---------------------------------------------------------------------------
49
+ const HR_GVAR_PREFIX = "$hr_gvar_";
50
+ const MAX_OBJECT_GLOBALS = 16;
51
+ const MAX_PLAYER_GLOBALS = 8;
52
+ const MAX_TEAM_GLOBALS = 8;
54
53
  function visit_object_tree(root, fn) {
55
54
  if (root === null || typeof root !== "object") {
56
55
  return;
@@ -67,133 +66,424 @@ function visit_object_tree(root, fn) {
67
66
  visit_object_tree(value, fn);
68
67
  }
69
68
  }
70
- function remap_set_to_absolute_mcc_to_tu1(root) {
69
+ function remap_temporary_explicit_refs(root, maps) {
71
70
  visit_object_tree(root, (obj) => {
72
- if (obj.m_operation === megalogamengine_actions_2.e_math_operation.set_to_absolute) {
73
- obj.m_operation = megalogamengine_actions_1.e_math_operation.set_to_absolute;
71
+ const objectType = obj.m_explicit_object_type;
72
+ if (typeof objectType === "number" &&
73
+ objectType >= megalogamengine_explicit_object_2.e_explicit_object_type.temporary_0 &&
74
+ objectType <= megalogamengine_explicit_object_2.e_explicit_object_type.temporary_7) {
75
+ const temporaryIndex = objectType - megalogamengine_explicit_object_2.e_explicit_object_type.temporary_0;
76
+ const globalIndex = maps.object.get(temporaryIndex);
77
+ if (globalIndex !== undefined) {
78
+ obj.m_explicit_object_type =
79
+ megalogamengine_explicit_object_1.e_explicit_object_type.global_0 + globalIndex;
80
+ }
81
+ }
82
+ const playerType = obj.m_explicit_player_type;
83
+ if (typeof playerType === "number" &&
84
+ playerType >= megalogamengine_explicit_player_2.e_explicit_player_type.temporary_0 &&
85
+ playerType <= megalogamengine_explicit_player_2.e_explicit_player_type.temporary_2) {
86
+ const temporaryIndex = playerType - megalogamengine_explicit_player_2.e_explicit_player_type.temporary_0;
87
+ const globalIndex = maps.player.get(temporaryIndex);
88
+ if (globalIndex !== undefined) {
89
+ obj.m_explicit_player_type =
90
+ megalogamengine_explicit_player_1.e_explicit_player_type.global_0 + globalIndex;
91
+ }
74
92
  }
75
- if (obj.m_math_operation === megalogamengine_actions_2.e_math_operation.set_to_absolute) {
76
- obj.m_math_operation = megalogamengine_actions_1.e_math_operation.set_to_absolute;
93
+ const teamType = obj.m_explicit_team_type;
94
+ if (typeof teamType === "number" &&
95
+ teamType >= megalogamengine_explicit_team_2.e_explicit_team_type.temporary_0 &&
96
+ teamType <= megalogamengine_explicit_team_2.e_explicit_team_type.temporary_5) {
97
+ const temporaryIndex = teamType - megalogamengine_explicit_team_2.e_explicit_team_type.temporary_0;
98
+ const globalIndex = maps.team.get(temporaryIndex);
99
+ if (globalIndex !== undefined) {
100
+ obj.m_explicit_team_type =
101
+ megalogamengine_explicit_team_1.e_explicit_team_type.global_0 + globalIndex;
102
+ }
77
103
  }
78
104
  });
79
105
  }
80
- function remap_set_to_absolute_tu1_to_mcc(root) {
81
- visit_object_tree(root, (obj) => {
82
- if (obj.m_operation === megalogamengine_actions_1.e_math_operation.set_to_absolute) {
83
- obj.m_operation = megalogamengine_actions_2.e_math_operation.set_to_absolute;
106
+ function extend_global_metadata(metadata, maps) {
107
+ const maxObjectGlobal = Math.max(0, ...maps.object.values());
108
+ while (metadata.m_object_variables.length <= maxObjectGlobal) {
109
+ metadata.m_object_variables.push(0);
110
+ }
111
+ const maxPlayerGlobal = Math.max(0, ...maps.player.values());
112
+ while (metadata.m_player_variables.length <= maxPlayerGlobal) {
113
+ metadata.m_player_variables.push(0);
114
+ }
115
+ const maxTeamGlobal = Math.max(0, ...maps.team.values());
116
+ while (metadata.m_team_variables.length <= maxTeamGlobal) {
117
+ metadata.m_team_variables.push([0, 0]);
118
+ }
119
+ }
120
+ function apply_survival_mcc_to_tu1(survival) {
121
+ if (survival === undefined) {
122
+ return;
123
+ }
124
+ survival.m_campaign_difficulty_level = TU1_SURVIVAL_CAMPAIGN_DIFFICULTY;
125
+ delete survival.m_encoding_version;
126
+ delete survival.m_additional_flags;
127
+ }
128
+ function apply_survival_tu1_to_mcc(survival) {
129
+ if (survival === undefined) {
130
+ return;
131
+ }
132
+ survival.m_encoding_version = MCC_SURVIVAL_ENCODING_VERSION;
133
+ survival.m_additional_flags = 0;
134
+ delete survival.m_campaign_difficulty_level;
135
+ }
136
+ function first_localized_string(table) {
137
+ const value = table?.strings[0]?.[0];
138
+ if (value === null || value === undefined || value.length === 0) {
139
+ return;
140
+ }
141
+ return value;
142
+ }
143
+ function resolve_hr_gvar_name(value, localized_name) {
144
+ if (value === undefined || !value.startsWith(HR_GVAR_PREFIX)) {
145
+ return value ?? "";
146
+ }
147
+ const localized = first_localized_string(localized_name);
148
+ if (localized !== undefined) {
149
+ return localized;
150
+ }
151
+ return value.slice(HR_GVAR_PREFIX.length).replaceAll("_", " ");
152
+ }
153
+ function resolve_hr_gvar_description(value, localized_description) {
154
+ if (value === undefined || !value.startsWith(HR_GVAR_PREFIX)) {
155
+ return value ?? "";
156
+ }
157
+ return first_localized_string(localized_description) ?? "";
158
+ }
159
+ function apply_mcc_to_tu1_name_description(from, to) {
160
+ const mccCustom = from.m_custom_variant;
161
+ const tu1Custom = to.m_custom_variant;
162
+ if (mccCustom === undefined || tu1Custom === undefined) {
163
+ return;
164
+ }
165
+ const metadata = tu1Custom.m_base_variant.m_metadata;
166
+ metadata.name = resolve_hr_gvar_name(mccCustom.m_base_variant.m_metadata.name, mccCustom.m_localized_name);
167
+ metadata.description = resolve_hr_gvar_description(mccCustom.m_base_variant.m_metadata.description, mccCustom.m_localized_description);
168
+ }
169
+ function object_global_index(value) {
170
+ if (value >= megalogamengine_explicit_object_1.e_explicit_object_type.global_0 &&
171
+ value <= megalogamengine_explicit_object_1.e_explicit_object_type.global_15) {
172
+ return value - megalogamengine_explicit_object_1.e_explicit_object_type.global_0;
173
+ }
174
+ return;
175
+ }
176
+ function object_temporary_index(value) {
177
+ if (value >= megalogamengine_explicit_object_2.e_explicit_object_type.temporary_0 &&
178
+ value <= megalogamengine_explicit_object_2.e_explicit_object_type.temporary_7) {
179
+ return value - megalogamengine_explicit_object_2.e_explicit_object_type.temporary_0;
180
+ }
181
+ return;
182
+ }
183
+ function player_global_index(value) {
184
+ if (value >= megalogamengine_explicit_player_1.e_explicit_player_type.global_0 &&
185
+ value <= megalogamengine_explicit_player_1.e_explicit_player_type.global_7) {
186
+ return value - megalogamengine_explicit_player_1.e_explicit_player_type.global_0;
187
+ }
188
+ return;
189
+ }
190
+ function player_temporary_index(value) {
191
+ if (value >= megalogamengine_explicit_player_2.e_explicit_player_type.temporary_0 &&
192
+ value <= megalogamengine_explicit_player_2.e_explicit_player_type.temporary_2) {
193
+ return value - megalogamengine_explicit_player_2.e_explicit_player_type.temporary_0;
194
+ }
195
+ return;
196
+ }
197
+ function team_global_index(value) {
198
+ if (value >= megalogamengine_explicit_team_1.e_explicit_team_type.global_0 &&
199
+ value <= megalogamengine_explicit_team_1.e_explicit_team_type.global_7) {
200
+ return value - megalogamengine_explicit_team_1.e_explicit_team_type.global_0;
201
+ }
202
+ return;
203
+ }
204
+ function team_temporary_index(value) {
205
+ if (value >= megalogamengine_explicit_team_2.e_explicit_team_type.temporary_0 &&
206
+ value <= megalogamengine_explicit_team_2.e_explicit_team_type.temporary_5) {
207
+ return value - megalogamengine_explicit_team_2.e_explicit_team_type.temporary_0;
208
+ }
209
+ return;
210
+ }
211
+ function reserve_metadata_slots(usage, metadata) {
212
+ for (let i = 0; i < metadata.m_object_variables.length; i++) {
213
+ usage.object.add(i);
214
+ }
215
+ for (let i = 0; i < metadata.m_player_variables.length; i++) {
216
+ usage.player.add(i);
217
+ }
218
+ for (let i = 0; i < metadata.m_team_variables.length; i++) {
219
+ usage.team.add(i);
220
+ }
221
+ for (let i = 0; i < metadata.m_numeric_variables.length; i++) {
222
+ usage.numeric.add(i);
223
+ }
224
+ }
225
+ function collect_slot_usage_from_object(obj, globals, temporaries) {
226
+ const objectType = obj.m_explicit_object_type;
227
+ if (typeof objectType === "number") {
228
+ const globalIndex = object_global_index(objectType);
229
+ if (globalIndex !== undefined) {
230
+ globals.object.add(globalIndex);
84
231
  }
85
- if (obj.m_math_operation === megalogamengine_actions_1.e_math_operation.set_to_absolute) {
86
- obj.m_math_operation = megalogamengine_actions_2.e_math_operation.set_to_absolute;
232
+ const temporaryIndex = object_temporary_index(objectType);
233
+ if (temporaryIndex !== undefined) {
234
+ temporaries.object.add(temporaryIndex);
87
235
  }
88
- });
236
+ }
237
+ const playerType = obj.m_explicit_player_type;
238
+ if (typeof playerType === "number") {
239
+ const globalIndex = player_global_index(playerType);
240
+ if (globalIndex !== undefined) {
241
+ globals.player.add(globalIndex);
242
+ }
243
+ const temporaryIndex = player_temporary_index(playerType);
244
+ if (temporaryIndex !== undefined) {
245
+ temporaries.player.add(temporaryIndex);
246
+ }
247
+ }
248
+ const teamType = obj.m_explicit_team_type;
249
+ if (typeof teamType === "number") {
250
+ const globalIndex = team_global_index(teamType);
251
+ if (globalIndex !== undefined) {
252
+ globals.team.add(globalIndex);
253
+ }
254
+ const temporaryIndex = team_temporary_index(teamType);
255
+ if (temporaryIndex !== undefined) {
256
+ temporaries.team.add(temporaryIndex);
257
+ }
258
+ }
259
+ if (obj.m_type === 4 && typeof obj.m_variable_index === "number") {
260
+ globals.numeric.add(obj.m_variable_index);
261
+ }
89
262
  }
90
- // ---------------------------------------------------------------------------
91
- // MCC TU1 compatibility checks
92
- // ---------------------------------------------------------------------------
93
- function variant_uses_temporary_explicit_refs(variant) {
94
- let found = false;
95
- visit_object_tree(variant, (obj) => {
96
- if (found) {
263
+ function collect_slot_usage(root) {
264
+ const globals = {
265
+ object: new Set(),
266
+ player: new Set(),
267
+ team: new Set(),
268
+ numeric: new Set(),
269
+ };
270
+ const temporaries = {
271
+ object: new Set(),
272
+ player: new Set(),
273
+ team: new Set(),
274
+ };
275
+ visit_object_tree(root, (obj) => collect_slot_usage_from_object(obj, globals, temporaries));
276
+ return { globals, temporaries };
277
+ }
278
+ function allocate_global_slot(used, max) {
279
+ for (let index = 0; index < max; index++) {
280
+ if (!used.has(index)) {
281
+ used.add(index);
282
+ return index;
283
+ }
284
+ }
285
+ return;
286
+ }
287
+ function build_temporary_to_global_maps(globals, temporaries) {
288
+ const maps = {
289
+ object: new Map(),
290
+ player: new Map(),
291
+ team: new Map(),
292
+ };
293
+ for (const temporaryIndex of [...temporaries.object].sort((a, b) => a - b)) {
294
+ const globalIndex = allocate_global_slot(globals.object, MAX_OBJECT_GLOBALS);
295
+ if (globalIndex === undefined) {
97
296
  return;
98
297
  }
99
- const team = obj.m_explicit_team_type;
100
- if (typeof team === "number" &&
101
- team >= megalogamengine_explicit_team_1.e_explicit_team_type.temporary_0 &&
102
- team <= megalogamengine_explicit_team_1.e_explicit_team_type.temporary_5) {
103
- found = true;
298
+ maps.object.set(temporaryIndex, globalIndex);
299
+ }
300
+ for (const temporaryIndex of [...temporaries.player].sort((a, b) => a - b)) {
301
+ const globalIndex = allocate_global_slot(globals.player, MAX_PLAYER_GLOBALS);
302
+ if (globalIndex === undefined) {
104
303
  return;
105
304
  }
106
- const player = obj.m_explicit_player_type;
107
- if (typeof player === "number" &&
108
- player >= megalogamengine_explicit_player_1.e_explicit_player_type.temporary_0 &&
109
- player <= megalogamengine_explicit_player_1.e_explicit_player_type.temporary_2) {
110
- found = true;
305
+ maps.player.set(temporaryIndex, globalIndex);
306
+ }
307
+ for (const temporaryIndex of [...temporaries.team].sort((a, b) => a - b)) {
308
+ const globalIndex = allocate_global_slot(globals.team, MAX_TEAM_GLOBALS);
309
+ if (globalIndex === undefined) {
111
310
  return;
112
311
  }
113
- const object = obj.m_explicit_object_type;
114
- if (typeof object === "number" &&
115
- object >= megalogamengine_explicit_object_1.e_explicit_object_type.temporary_0 &&
116
- object <= megalogamengine_explicit_object_1.e_explicit_object_type.temporary_7) {
312
+ maps.team.set(temporaryIndex, globalIndex);
313
+ }
314
+ return maps;
315
+ }
316
+ function get_custom_engine_tu1(variant) {
317
+ return variant.m_custom_variant?.m_game_engine;
318
+ }
319
+ function copy_variable_metadata_mcc_to_tu1(from, to) {
320
+ to.m_numeric_variables = from.m_numeric_variables.map(([ref, state]) => [
321
+ reach_gametype_automap_1.mccToTu1Mapper.map(ref, megalogamengine_references_2.c_custom_variable_reference, megalogamengine_references_1.c_custom_variable_reference),
322
+ state,
323
+ ]);
324
+ to.m_timer_variables = from.m_timer_variables.map((ref) => reach_gametype_automap_1.mccToTu1Mapper.map(ref, megalogamengine_references_2.c_custom_variable_reference, megalogamengine_references_1.c_custom_variable_reference));
325
+ to.m_team_variables = from.m_team_variables.map(([value, state]) => [
326
+ value,
327
+ state,
328
+ ]);
329
+ to.m_player_variables = [...from.m_player_variables];
330
+ to.m_object_variables = [...from.m_object_variables];
331
+ }
332
+ function copy_variable_metadata_tu1_to_mcc(from, to) {
333
+ to.m_numeric_variables = from.m_numeric_variables.map(([ref, state]) => [
334
+ reach_gametype_automap_1.tu1ToMccMapper.map(ref, megalogamengine_references_1.c_custom_variable_reference, megalogamengine_references_2.c_custom_variable_reference),
335
+ state,
336
+ ]);
337
+ to.m_timer_variables = from.m_timer_variables.map((ref) => reach_gametype_automap_1.tu1ToMccMapper.map(ref, megalogamengine_references_1.c_custom_variable_reference, megalogamengine_references_2.c_custom_variable_reference));
338
+ to.m_team_variables = from.m_team_variables.map(([value, state]) => [
339
+ value,
340
+ state,
341
+ ]);
342
+ to.m_player_variables = [...from.m_player_variables];
343
+ to.m_object_variables = [...from.m_object_variables];
344
+ }
345
+ function copy_engine_variable_metadata_mcc_to_tu1(from, to) {
346
+ copy_variable_metadata_mcc_to_tu1(from.m_global_variable_metadata, to.m_global_variable_metadata);
347
+ copy_variable_metadata_mcc_to_tu1(from.m_player_variable_metadata, to.m_player_variable_metadata);
348
+ copy_variable_metadata_mcc_to_tu1(from.m_object_variable_metadata, to.m_object_variable_metadata);
349
+ copy_variable_metadata_mcc_to_tu1(from.m_team_variable_metadata, to.m_team_variable_metadata);
350
+ }
351
+ function copy_engine_variable_metadata_tu1_to_mcc(from, to) {
352
+ copy_variable_metadata_tu1_to_mcc(from.m_global_variable_metadata, to.m_global_variable_metadata);
353
+ copy_variable_metadata_tu1_to_mcc(from.m_player_variable_metadata, to.m_player_variable_metadata);
354
+ copy_variable_metadata_tu1_to_mcc(from.m_object_variable_metadata, to.m_object_variable_metadata);
355
+ copy_variable_metadata_tu1_to_mcc(from.m_team_variable_metadata, to.m_team_variable_metadata);
356
+ }
357
+ function get_custom_engine(variant) {
358
+ return variant.m_custom_variant?.m_game_engine;
359
+ }
360
+ function apply_mcc_to_tu1_megalo_remapping(variant, maps) {
361
+ const engine = variant.m_custom_variant?.m_game_engine;
362
+ if (!engine) {
363
+ return;
364
+ }
365
+ remap_temporary_explicit_refs(engine, maps);
366
+ extend_global_metadata(engine.m_global_variable_metadata, maps);
367
+ }
368
+ function variant_uses_mcc_only_math_ops(variant) {
369
+ let found = false;
370
+ visit_object_tree(variant, (obj) => {
371
+ if (found) {
372
+ return;
373
+ }
374
+ const op = obj.m_operation ?? obj.m_math_operation;
375
+ if (typeof op === "number" && MCC_ONLY_MATH_OPS.includes(op)) {
117
376
  found = true;
118
377
  }
119
378
  });
120
379
  return found;
121
380
  }
122
- function variant_uses_mcc_only_math_ops(variant) {
381
+ function variant_uses_mcc_only_action_types(variant) {
123
382
  let found = false;
124
383
  visit_object_tree(variant, (obj) => {
125
384
  if (found) {
126
385
  return;
127
386
  }
128
- const op = obj.m_operation ?? obj.m_math_operation;
129
- if (typeof op === "number" && MCC_ONLY_MATH_OPS.includes(op)) {
387
+ const actionType = obj.m_type;
388
+ if (typeof actionType === "number" &&
389
+ MCC_ONLY_ACTION_TYPES.includes(actionType)) {
130
390
  found = true;
131
391
  }
132
392
  });
133
393
  return found;
134
394
  }
135
- /** Returns false when MCC features cannot be represented in TU1. */
136
- function can_convert_mcc_game_variant_to_tu1(from) {
395
+ function plan_temporary_relocation(variant) {
396
+ const engine = get_custom_engine(variant);
397
+ if (!engine) {
398
+ return { object: new Map(), player: new Map(), team: new Map() };
399
+ }
400
+ const { globals, temporaries } = collect_slot_usage(engine);
401
+ reserve_metadata_slots(globals, engine.m_global_variable_metadata);
402
+ if (temporaries.object.size === 0 &&
403
+ temporaries.player.size === 0 &&
404
+ temporaries.team.size === 0) {
405
+ return { object: new Map(), player: new Map(), team: new Map() };
406
+ }
407
+ return build_temporary_to_global_maps(globals, temporaries);
408
+ }
409
+ function check_mcc_game_variant_to_tu1(from) {
410
+ if (from.m_game_engine === c_game_variant_2.e_game_mode.sandbox) {
411
+ return reach_gametype_conversion_error_1.e_reach_gametype_conversion_error.forge_variant;
412
+ }
413
+ if (from.m_game_engine === c_game_variant_2.e_game_mode.campaign) {
414
+ return reach_gametype_conversion_error_1.e_reach_gametype_conversion_error.campaign_variant;
415
+ }
137
416
  if (from.m_game_engine === c_game_variant_2.e_game_mode.survival &&
138
417
  from.m_survival_variant !== undefined &&
139
418
  from.m_survival_variant.m_additional_flags !== 0) {
140
- return false;
419
+ return reach_gametype_conversion_error_1.e_reach_gametype_conversion_error.mcc_survival_additional_flags;
141
420
  }
142
- if (variant_uses_temporary_explicit_refs(from)) {
143
- return false;
421
+ if (variant_uses_mcc_only_action_types(from)) {
422
+ return reach_gametype_conversion_error_1.e_reach_gametype_conversion_error.mcc_exclusive_action;
144
423
  }
145
424
  if (variant_uses_mcc_only_math_ops(from)) {
146
- return false;
425
+ return reach_gametype_conversion_error_1.e_reach_gametype_conversion_error.mcc_exclusive_math_operator;
147
426
  }
148
- return true;
149
- }
150
- // ---------------------------------------------------------------------------
151
- // Survival (MCC and TU1 use different field names for unrelated data)
152
- // ---------------------------------------------------------------------------
153
- function survival_json_mcc_to_tu1(survival) {
154
- survival.m_campaign_difficulty_level = TU1_SURVIVAL_CAMPAIGN_DIFFICULTY;
155
- survival.m_encoding_version = undefined;
156
- survival.m_additional_flags = undefined;
427
+ if (plan_temporary_relocation(from) === undefined) {
428
+ return reach_gametype_conversion_error_1.e_reach_gametype_conversion_error.insufficient_global_slots;
429
+ }
430
+ return reach_gametype_conversion_error_1.e_reach_gametype_conversion_error.ok;
157
431
  }
158
- function survival_json_tu1_to_mcc(survival) {
159
- survival.m_encoding_version = MCC_SURVIVAL_ENCODING_VERSION;
160
- survival.m_campaign_difficulty_level = undefined;
161
- survival.m_additional_flags = 0;
432
+ function check_tu1_game_variant_to_mcc(from) {
433
+ if (from.m_game_engine === c_game_variant_1.e_game_mode.sandbox) {
434
+ return reach_gametype_conversion_error_1.e_reach_gametype_conversion_error.forge_variant;
435
+ }
436
+ if (from.m_game_engine === c_game_variant_1.e_game_mode.campaign) {
437
+ return reach_gametype_conversion_error_1.e_reach_gametype_conversion_error.campaign_variant;
438
+ }
439
+ return reach_gametype_conversion_error_1.e_reach_gametype_conversion_error.ok;
162
440
  }
163
- // ---------------------------------------------------------------------------
164
- // Conversion (cross-version only)
165
- // ---------------------------------------------------------------------------
166
441
  function convert_mcc_to_tu1(from, to) {
167
- if (!can_convert_mcc_game_variant_to_tu1(from)) {
168
- return false;
442
+ const error = check_mcc_game_variant_to_tu1(from);
443
+ if (error !== reach_gametype_conversion_error_1.e_reach_gametype_conversion_error.ok) {
444
+ return error;
445
+ }
446
+ const maps = plan_temporary_relocation(from);
447
+ if (maps === undefined) {
448
+ return reach_gametype_conversion_error_1.e_reach_gametype_conversion_error.insufficient_global_slots;
169
449
  }
170
- const data = json_clone(from);
171
- remap_set_to_absolute_mcc_to_tu1(data);
172
- if (data.m_survival_variant !== undefined) {
173
- survival_json_mcc_to_tu1(data.m_survival_variant);
450
+ const converted = (0, reach_gametype_automapper_1.map_reach_gametype_mcc_to_tu1)(from);
451
+ const sourceEngine = get_custom_engine(from);
452
+ const targetEngine = converted.m_custom_variant?.m_game_engine;
453
+ if (sourceEngine !== undefined && targetEngine !== undefined) {
454
+ copy_engine_variable_metadata_mcc_to_tu1(sourceEngine, targetEngine);
174
455
  }
175
- write_game_variant_json(to, data);
176
- return true;
456
+ apply_mcc_to_tu1_megalo_remapping(converted, maps);
457
+ apply_mcc_to_tu1_name_description(from, converted);
458
+ apply_survival_mcc_to_tu1(converted.m_survival_variant);
459
+ Object.assign(to, converted);
460
+ return reach_gametype_conversion_error_1.e_reach_gametype_conversion_error.ok;
177
461
  }
178
462
  function convert_tu1_to_mcc(from, to) {
179
- const data = json_clone(from);
180
- remap_set_to_absolute_tu1_to_mcc(data);
181
- if (data.m_survival_variant !== undefined) {
182
- survival_json_tu1_to_mcc(data.m_survival_variant);
463
+ const error = check_tu1_game_variant_to_mcc(from);
464
+ if (error !== reach_gametype_conversion_error_1.e_reach_gametype_conversion_error.ok) {
465
+ return error;
183
466
  }
184
- write_game_variant_json(to, data);
185
- return true;
186
- }
187
- function convert_reach_gametype(from, to) {
188
- if (from.m_game_engine === c_game_variant_1.e_game_mode.sandbox) {
189
- throw new error_1.BlfError("Forge game variants are not supported. Where did you even get this?");
467
+ const converted = (0, reach_gametype_automapper_1.map_reach_gametype_tu1_to_mcc)(from);
468
+ const sourceEngine = get_custom_engine_tu1(from);
469
+ const targetEngine = converted.m_custom_variant?.m_game_engine;
470
+ if (sourceEngine !== undefined && targetEngine !== undefined) {
471
+ copy_engine_variable_metadata_tu1_to_mcc(sourceEngine, targetEngine);
190
472
  }
473
+ apply_survival_tu1_to_mcc(converted.m_survival_variant);
474
+ Object.assign(to, converted);
475
+ return reach_gametype_conversion_error_1.e_reach_gametype_conversion_error.ok;
476
+ }
477
+ function assert_cross_version(from, to) {
191
478
  const from_is_mcc = from instanceof c_game_variant_2.c_game_variant;
192
479
  const to_is_mcc = to instanceof c_game_variant_2.c_game_variant;
193
480
  if (from_is_mcc === to_is_mcc) {
194
481
  throw new error_1.BlfError("convert_reach_gametype only supports cross-version conversion between Reach TU1 and Reach MCC");
195
482
  }
196
- if (from_is_mcc) {
483
+ }
484
+ function convert_reach_gametype(from, to) {
485
+ assert_cross_version(from, to);
486
+ if (from instanceof c_game_variant_2.c_game_variant) {
197
487
  return convert_mcc_to_tu1(from, to);
198
488
  }
199
489
  return convert_tu1_to_mcc(from, to);