@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.
Files changed (410) 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 +3 -2
  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 +3 -2
  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_16_1352/index.js +5 -0
  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 +12 -0
  180. package/dist/chunks/mcc/s_blf_chunk_fileshare_metadata.d.ts.map +1 -0
  181. package/dist/chunks/mcc/s_blf_chunk_fileshare_metadata.js +107 -0
  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 -109
  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/blam/haloreach_mcc/v_untracked_25_08_16_1352/saved_games/saved_game_files.js +17 -0
  277. package/dist-cjs/blf_chunk.js +20 -15
  278. package/dist-cjs/chunks/haloreach/v12065_11_08_24_1738_tu1actual/index.js +19 -13
  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_16_1352/index.js +26 -0
  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 +110 -0
  285. package/dist-cjs/helpers/automap.js +40 -0
  286. package/dist-cjs/helpers/convert_reach_gametype.js +407 -111
  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 +14 -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/chunks/haloreach_mcc/v_untracked_25_08_19_1352/index.js +0 -4
  348. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_custom_variant.js +0 -129
  349. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_custom_variant_au1_settings.js +0 -34
  350. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_default.js +0 -305
  351. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_survival_variant.js +0 -192
  352. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_traits.js +0 -20
  353. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_variant.js +0 -113
  354. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_player_traits.js +0 -151
  355. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_string_table.js +0 -195
  356. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/game_engine_enums.js +0 -64
  357. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/c_megalo_game_statistic.js +0 -22
  358. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/c_megalogamengine_map_permissions.js +0 -22
  359. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/c_object_filter.js +0 -43
  360. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/c_trigger.js +0 -63
  361. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_actions.js +0 -1748
  362. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_conditions.js +0 -234
  363. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_references.js +0 -517
  364. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_text.js +0 -125
  365. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_custom_game_engine_definition.js +0 -120
  366. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_game_engine_player_rating_parameters.js +0 -58
  367. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_user_defined_option.js +0 -87
  368. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_variable_metadata.js +0 -93
  369. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_variant_variable.js +0 -79
  370. package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/saved_games/saved_game_files.js +0 -591
  371. package/dist-cjs/chunks/haloreach_mcc/v_untracked_25_08_19_1352/index.js +0 -19
  372. /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
  373. /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
  374. /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
  375. /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
  376. /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
  377. /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
  378. /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
  379. /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/index.d.ts +0 -0
  380. /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/index.js +0 -0
  381. /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
  382. /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
  383. /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
  384. /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
  385. /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/index.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.js +0 -0
  387. /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
  388. /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
  389. /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
  390. /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
  391. /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
  392. /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
  393. /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
  394. /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
  395. /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
  396. /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
  397. /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
  398. /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
  399. /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
  400. /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
  401. /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
  402. /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/index.d.ts +0 -0
  403. /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/index.js +0 -0
  404. /package/dist-cjs/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/index.js +0 -0
  405. /package/dist-cjs/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/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/megalogamengine_explicit_object.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_player.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_team.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_hud_widgets.js +0 -0
  410. /package/dist-cjs/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/index.js +0 -0
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ /**
3
+ * Stage-3 `@AutoMap` for Reach gametype classes.
4
+ * Compatible with `@craftycodie/cstruct` field decorators in the same project.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.AUTOMAP_PROPERTIES_METADATA_KEY = void 0;
8
+ exports.AutoMap = AutoMap;
9
+ exports.stage3AutoMapMetadata = stage3AutoMapMetadata;
10
+ const classes_1 = require("@automapper/classes");
11
+ var classes_2 = require("@automapper/classes");
12
+ Object.defineProperty(exports, "AUTOMAP_PROPERTIES_METADATA_KEY", { enumerable: true, get: function () { return classes_2.AUTOMAP_PROPERTIES_METADATA_KEY; } });
13
+ function resolveOptions(typeFnOrOptions) {
14
+ if (typeFnOrOptions === undefined) {
15
+ throw new Error("@AutoMap requires an explicit type, e.g. @AutoMap(() => MyType)");
16
+ }
17
+ if (typeof typeFnOrOptions === "function") {
18
+ return {
19
+ type: typeFnOrOptions,
20
+ depth: 1,
21
+ };
22
+ }
23
+ return { depth: 1, ...typeFnOrOptions };
24
+ }
25
+ function AutoMap(typeFnOrOptions) {
26
+ const options = resolveOptions(typeFnOrOptions);
27
+ return (_value, context) => {
28
+ if (context.kind !== "field") {
29
+ return;
30
+ }
31
+ const metadata = context.metadata;
32
+ const list = metadata[classes_1.AUTOMAP_PROPERTIES_METADATA_KEY] ?? [];
33
+ list.push([String(context.name), options]);
34
+ metadata[classes_1.AUTOMAP_PROPERTIES_METADATA_KEY] = list;
35
+ };
36
+ }
37
+ function stage3AutoMapMetadata(ctor) {
38
+ const classMetadata = ctor[Symbol.metadata];
39
+ return classMetadata?.[classes_1.AUTOMAP_PROPERTIES_METADATA_KEY] ?? [];
40
+ }
@@ -1,50 +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
- function json_clone(value) {
37
- return JSON.parse(JSON.stringify(value));
38
- }
39
- function write_game_variant_json(to, data) {
40
- to.m_game_engine = data.m_game_engine;
41
- to.m_campaign_variant = data.m_campaign_variant;
42
- to.m_custom_variant = data.m_custom_variant;
43
- to.m_survival_variant = data.m_survival_variant;
44
- }
45
- // ---------------------------------------------------------------------------
46
- // Tree walk
47
- // ---------------------------------------------------------------------------
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;
48
53
  function visit_object_tree(root, fn) {
49
54
  if (root === null || typeof root !== "object") {
50
55
  return;
@@ -61,133 +66,424 @@ function visit_object_tree(root, fn) {
61
66
  visit_object_tree(value, fn);
62
67
  }
63
68
  }
64
- function remap_set_to_absolute_mcc_to_tu1(root) {
69
+ function remap_temporary_explicit_refs(root, maps) {
65
70
  visit_object_tree(root, (obj) => {
66
- if (obj.m_operation === megalogamengine_actions_2.e_math_operation.set_to_absolute) {
67
- 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
+ }
68
92
  }
69
- if (obj.m_math_operation === megalogamengine_actions_2.e_math_operation.set_to_absolute) {
70
- 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
+ }
71
103
  }
72
104
  });
73
105
  }
74
- function remap_set_to_absolute_tu1_to_mcc(root) {
75
- visit_object_tree(root, (obj) => {
76
- if (obj.m_operation === megalogamengine_actions_1.e_math_operation.set_to_absolute) {
77
- 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);
78
231
  }
79
- if (obj.m_math_operation === megalogamengine_actions_1.e_math_operation.set_to_absolute) {
80
- 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);
81
235
  }
82
- });
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
+ }
83
262
  }
84
- // ---------------------------------------------------------------------------
85
- // MCC TU1 compatibility checks
86
- // ---------------------------------------------------------------------------
87
- function variant_uses_temporary_explicit_refs(variant) {
88
- let found = false;
89
- visit_object_tree(variant, (obj) => {
90
- 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) {
91
296
  return;
92
297
  }
93
- const team = obj.m_explicit_team_type;
94
- if (typeof team === "number" &&
95
- team >= megalogamengine_explicit_team_1.e_explicit_team_type.temporary_0 &&
96
- team <= megalogamengine_explicit_team_1.e_explicit_team_type.temporary_5) {
97
- 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) {
98
303
  return;
99
304
  }
100
- const player = obj.m_explicit_player_type;
101
- if (typeof player === "number" &&
102
- player >= megalogamengine_explicit_player_1.e_explicit_player_type.temporary_0 &&
103
- player <= megalogamengine_explicit_player_1.e_explicit_player_type.temporary_2) {
104
- 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) {
105
310
  return;
106
311
  }
107
- const object = obj.m_explicit_object_type;
108
- if (typeof object === "number" &&
109
- object >= megalogamengine_explicit_object_1.e_explicit_object_type.temporary_0 &&
110
- 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)) {
111
376
  found = true;
112
377
  }
113
378
  });
114
379
  return found;
115
380
  }
116
- function variant_uses_mcc_only_math_ops(variant) {
381
+ function variant_uses_mcc_only_action_types(variant) {
117
382
  let found = false;
118
383
  visit_object_tree(variant, (obj) => {
119
384
  if (found) {
120
385
  return;
121
386
  }
122
- const op = obj.m_operation ?? obj.m_math_operation;
123
- 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)) {
124
390
  found = true;
125
391
  }
126
392
  });
127
393
  return found;
128
394
  }
129
- /** Returns false when MCC features cannot be represented in TU1. */
130
- 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
+ }
131
416
  if (from.m_game_engine === c_game_variant_2.e_game_mode.survival &&
132
417
  from.m_survival_variant !== undefined &&
133
418
  from.m_survival_variant.m_additional_flags !== 0) {
134
- return false;
419
+ return reach_gametype_conversion_error_1.e_reach_gametype_conversion_error.mcc_survival_additional_flags;
135
420
  }
136
- if (variant_uses_temporary_explicit_refs(from)) {
137
- 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;
138
423
  }
139
424
  if (variant_uses_mcc_only_math_ops(from)) {
140
- return false;
425
+ return reach_gametype_conversion_error_1.e_reach_gametype_conversion_error.mcc_exclusive_math_operator;
141
426
  }
142
- return true;
143
- }
144
- // ---------------------------------------------------------------------------
145
- // Survival (MCC and TU1 use different field names for unrelated data)
146
- // ---------------------------------------------------------------------------
147
- function survival_json_mcc_to_tu1(survival) {
148
- survival.m_campaign_difficulty_level = TU1_SURVIVAL_CAMPAIGN_DIFFICULTY;
149
- survival.m_encoding_version = undefined;
150
- 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;
151
431
  }
152
- function survival_json_tu1_to_mcc(survival) {
153
- survival.m_encoding_version = MCC_SURVIVAL_ENCODING_VERSION;
154
- survival.m_campaign_difficulty_level = undefined;
155
- 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;
156
440
  }
157
- // ---------------------------------------------------------------------------
158
- // Conversion (cross-version only)
159
- // ---------------------------------------------------------------------------
160
441
  function convert_mcc_to_tu1(from, to) {
161
- if (!can_convert_mcc_game_variant_to_tu1(from)) {
162
- 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;
163
449
  }
164
- const data = json_clone(from);
165
- remap_set_to_absolute_mcc_to_tu1(data);
166
- if (data.m_survival_variant !== undefined) {
167
- 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);
168
455
  }
169
- write_game_variant_json(to, data);
170
- 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;
171
461
  }
172
462
  function convert_tu1_to_mcc(from, to) {
173
- const data = json_clone(from);
174
- remap_set_to_absolute_tu1_to_mcc(data);
175
- if (data.m_survival_variant !== undefined) {
176
- 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;
177
466
  }
178
- write_game_variant_json(to, data);
179
- return true;
180
- }
181
- function convert_reach_gametype(from, to) {
182
- if (from.m_game_engine === c_game_variant_1.e_game_mode.sandbox) {
183
- 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);
184
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) {
185
478
  const from_is_mcc = from instanceof c_game_variant_2.c_game_variant;
186
479
  const to_is_mcc = to instanceof c_game_variant_2.c_game_variant;
187
480
  if (from_is_mcc === to_is_mcc) {
188
481
  throw new error_1.BlfError("convert_reach_gametype only supports cross-version conversion between Reach TU1 and Reach MCC");
189
482
  }
190
- 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) {
191
487
  return convert_mcc_to_tu1(from, to);
192
488
  }
193
489
  return convert_tu1_to_mcc(from, to);