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