@blamnetwork/blf 1.0.0-alpha.1

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 (235) hide show
  1. package/README.md +82 -0
  2. package/dist/bitstream/enum.d.ts +6 -0
  3. package/dist/bitstream/enum.d.ts.map +1 -0
  4. package/dist/bitstream/enum.js +15 -0
  5. package/dist/bitstream/enums.d.ts +21 -0
  6. package/dist/bitstream/enums.d.ts.map +1 -0
  7. package/dist/bitstream/enums.js +31 -0
  8. package/dist/bitstream/errors.d.ts +5 -0
  9. package/dist/bitstream/errors.d.ts.map +1 -0
  10. package/dist/bitstream/errors.js +11 -0
  11. package/dist/bitstream/index.d.ts +7 -0
  12. package/dist/bitstream/index.d.ts.map +1 -0
  13. package/dist/bitstream/index.js +5 -0
  14. package/dist/bitstream/math.d.ts +28 -0
  15. package/dist/bitstream/math.d.ts.map +1 -0
  16. package/dist/bitstream/math.js +149 -0
  17. package/dist/bitstream/reader.d.ts +81 -0
  18. package/dist/bitstream/reader.d.ts.map +1 -0
  19. package/dist/bitstream/reader.js +400 -0
  20. package/dist/bitstream/writer.d.ts +56 -0
  21. package/dist/bitstream/writer.d.ts.map +1 -0
  22. package/dist/bitstream/writer.js +330 -0
  23. package/dist/blam/common/cache/index.d.ts +2 -0
  24. package/dist/blam/common/cache/index.d.ts.map +1 -0
  25. package/dist/blam/common/cache/index.js +1 -0
  26. package/dist/blam/common/cache/security_functions.d.ts +2 -0
  27. package/dist/blam/common/cache/security_functions.d.ts.map +1 -0
  28. package/dist/blam/common/cache/security_functions.js +19 -0
  29. package/dist/blam/common/index.d.ts +3 -0
  30. package/dist/blam/common/index.d.ts.map +1 -0
  31. package/dist/blam/common/index.js +2 -0
  32. package/dist/blam/common/memory/data_compress.d.ts +10 -0
  33. package/dist/blam/common/memory/data_compress.d.ts.map +1 -0
  34. package/dist/blam/common/memory/data_compress.js +28 -0
  35. package/dist/blam/common/memory/index.d.ts +2 -0
  36. package/dist/blam/common/memory/index.d.ts.map +1 -0
  37. package/dist/blam/common/memory/index.js +1 -0
  38. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_custom_variant.d.ts +37 -0
  39. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_custom_variant.d.ts.map +1 -0
  40. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_custom_variant.js +125 -0
  41. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_custom_variant_au1_settings.d.ts +14 -0
  42. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_custom_variant_au1_settings.d.ts.map +1 -0
  43. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_custom_variant_au1_settings.js +30 -0
  44. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_default.d.ts +114 -0
  45. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_default.d.ts.map +1 -0
  46. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_default.js +292 -0
  47. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_survival_variant.d.ts +70 -0
  48. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_survival_variant.d.ts.map +1 -0
  49. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_survival_variant.js +174 -0
  50. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_traits.d.ts +10 -0
  51. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_traits.d.ts.map +1 -0
  52. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_traits.js +16 -0
  53. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_variant.d.ts +28 -0
  54. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_variant.d.ts.map +1 -0
  55. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_variant.js +109 -0
  56. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_player_traits.d.ts +56 -0
  57. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_player_traits.d.ts.map +1 -0
  58. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_player_traits.js +142 -0
  59. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_string_table.d.ts +27 -0
  60. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_string_table.d.ts.map +1 -0
  61. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_string_table.js +190 -0
  62. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/index.d.ts +10 -0
  63. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/index.d.ts.map +1 -0
  64. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/index.js +9 -0
  65. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_megalo_game_statistic.d.ts +10 -0
  66. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_megalo_game_statistic.d.ts.map +1 -0
  67. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_megalo_game_statistic.js +18 -0
  68. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_megalogamengine_map_permissions.d.ts +8 -0
  69. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_megalogamengine_map_permissions.d.ts.map +1 -0
  70. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_megalogamengine_map_permissions.js +18 -0
  71. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_object_filter.d.ts +13 -0
  72. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_object_filter.d.ts.map +1 -0
  73. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_object_filter.js +39 -0
  74. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_trigger.d.ts +34 -0
  75. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_trigger.d.ts.map +1 -0
  76. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_trigger.js +59 -0
  77. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/index.d.ts +14 -0
  78. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/index.d.ts.map +1 -0
  79. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/index.js +13 -0
  80. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_actions.d.ts +393 -0
  81. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_actions.d.ts.map +1 -0
  82. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_actions.js +1590 -0
  83. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_conditions.d.ts +49 -0
  84. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_conditions.d.ts.map +1 -0
  85. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_conditions.js +216 -0
  86. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_references.d.ts +79 -0
  87. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_references.d.ts.map +1 -0
  88. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_references.js +496 -0
  89. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_text.d.ts +26 -0
  90. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_text.d.ts.map +1 -0
  91. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_text.js +118 -0
  92. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_custom_game_engine_definition.d.ts +29 -0
  93. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_custom_game_engine_definition.d.ts.map +1 -0
  94. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_custom_game_engine_definition.js +116 -0
  95. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_game_engine_player_rating_parameters.d.ts +22 -0
  96. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_game_engine_player_rating_parameters.d.ts.map +1 -0
  97. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_game_engine_player_rating_parameters.js +54 -0
  98. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_user_defined_option.d.ts +22 -0
  99. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_user_defined_option.d.ts.map +1 -0
  100. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_user_defined_option.js +82 -0
  101. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_variable_metadata.d.ts +22 -0
  102. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_variable_metadata.d.ts.map +1 -0
  103. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_variable_metadata.js +85 -0
  104. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_variant_variable.d.ts +13 -0
  105. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_variant_variable.d.ts.map +1 -0
  106. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_variant_variable.js +75 -0
  107. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/index.d.ts +4 -0
  108. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/index.d.ts.map +1 -0
  109. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/index.js +3 -0
  110. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/index.d.ts +2 -0
  111. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/index.d.ts.map +1 -0
  112. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/index.js +1 -0
  113. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/saved_game_files.d.ts +66 -0
  114. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/saved_game_files.d.ts.map +1 -0
  115. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/saved_game_files.js +586 -0
  116. package/dist/blf_chunk.d.ts +41 -0
  117. package/dist/blf_chunk.d.ts.map +1 -0
  118. package/dist/blf_chunk.js +126 -0
  119. package/dist/blffile.d.ts +5 -0
  120. package/dist/blffile.d.ts.map +1 -0
  121. package/dist/blffile.js +23 -0
  122. package/dist/chunk_signature.d.ts +10 -0
  123. package/dist/chunk_signature.d.ts.map +1 -0
  124. package/dist/chunk_signature.js +47 -0
  125. package/dist/chunks/halo3/v12070_08_09_05_2031_halo3_ship/index.d.ts +4 -0
  126. package/dist/chunks/halo3/v12070_08_09_05_2031_halo3_ship/index.d.ts.map +1 -0
  127. package/dist/chunks/halo3/v12070_08_09_05_2031_halo3_ship/index.js +3 -0
  128. package/dist/chunks/halo3/v12070_08_09_05_2031_halo3_ship/s_blf_chunk_compressed_data.d.ts +21 -0
  129. package/dist/chunks/halo3/v12070_08_09_05_2031_halo3_ship/s_blf_chunk_compressed_data.d.ts.map +1 -0
  130. package/dist/chunks/halo3/v12070_08_09_05_2031_halo3_ship/s_blf_chunk_compressed_data.js +112 -0
  131. package/dist/chunks/halo3/v12070_08_09_05_2031_halo3_ship/s_blf_chunk_end_of_file.d.ts +7 -0
  132. package/dist/chunks/halo3/v12070_08_09_05_2031_halo3_ship/s_blf_chunk_end_of_file.d.ts.map +1 -0
  133. package/dist/chunks/halo3/v12070_08_09_05_2031_halo3_ship/s_blf_chunk_end_of_file.js +72 -0
  134. package/dist/chunks/halo3/v12070_08_09_05_2031_halo3_ship/s_blf_chunk_start_of_file.d.ts +13 -0
  135. package/dist/chunks/halo3/v12070_08_09_05_2031_halo3_ship/s_blf_chunk_start_of_file.d.ts.map +1 -0
  136. package/dist/chunks/halo3/v12070_08_09_05_2031_halo3_ship/s_blf_chunk_start_of_file.js +83 -0
  137. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/index.d.ts +7 -0
  138. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/index.d.ts.map +1 -0
  139. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/index.js +6 -0
  140. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_author.d.ts +26 -0
  141. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_author.d.ts.map +1 -0
  142. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_author.js +109 -0
  143. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_compressed_data.d.ts +4 -0
  144. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_compressed_data.d.ts.map +1 -0
  145. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_compressed_data.js +3 -0
  146. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_content_header.d.ts +8 -0
  147. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_content_header.d.ts.map +1 -0
  148. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_content_header.js +78 -0
  149. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_game_variant.d.ts +24 -0
  150. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_game_variant.d.ts.map +1 -0
  151. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_game_variant.js +130 -0
  152. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_packed_game_variant.d.ts +15 -0
  153. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_packed_game_variant.d.ts.map +1 -0
  154. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_packed_game_variant.js +85 -0
  155. package/dist/decorators.d.ts +38 -0
  156. package/dist/decorators.d.ts.map +1 -0
  157. package/dist/decorators.js +68 -0
  158. package/dist/error.d.ts +4 -0
  159. package/dist/error.d.ts.map +1 -0
  160. package/dist/error.js +6 -0
  161. package/dist/index.d.ts +7 -0
  162. package/dist/index.d.ts.map +1 -0
  163. package/dist/index.js +6 -0
  164. package/dist/s_blf_header.d.ts +14 -0
  165. package/dist/s_blf_header.d.ts.map +1 -0
  166. package/dist/s_blf_header.js +113 -0
  167. package/dist/versions/halo3/v12070_08_09_05_2031_halo3_ship.d.ts +5 -0
  168. package/dist/versions/halo3/v12070_08_09_05_2031_halo3_ship.d.ts.map +1 -0
  169. package/dist/versions/halo3/v12070_08_09_05_2031_halo3_ship.js +4 -0
  170. package/dist/versions/halo3odst/v13895_09_04_27_2201_atlas_release.d.ts +5 -0
  171. package/dist/versions/halo3odst/v13895_09_04_27_2201_atlas_release.d.ts.map +1 -0
  172. package/dist/versions/halo3odst/v13895_09_04_27_2201_atlas_release.js +4 -0
  173. package/dist/versions/haloreach/v12065_11_08_24_1738_tu1actual.d.ts +10 -0
  174. package/dist/versions/haloreach/v12065_11_08_24_1738_tu1actual.d.ts.map +1 -0
  175. package/dist/versions/haloreach/v12065_11_08_24_1738_tu1actual.js +9 -0
  176. package/dist-cjs/bitstream/enum.js +19 -0
  177. package/dist-cjs/bitstream/enums.js +34 -0
  178. package/dist-cjs/bitstream/errors.js +16 -0
  179. package/dist-cjs/bitstream/index.js +29 -0
  180. package/dist-cjs/bitstream/math.js +167 -0
  181. package/dist-cjs/bitstream/reader.js +404 -0
  182. package/dist-cjs/bitstream/writer.js +334 -0
  183. package/dist-cjs/blam/common/cache/index.js +17 -0
  184. package/dist-cjs/blam/common/cache/security_functions.js +22 -0
  185. package/dist-cjs/blam/common/index.js +18 -0
  186. package/dist-cjs/blam/common/memory/data_compress.js +33 -0
  187. package/dist-cjs/blam/common/memory/index.js +17 -0
  188. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_custom_variant.js +129 -0
  189. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_custom_variant_au1_settings.js +34 -0
  190. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_default.js +305 -0
  191. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_survival_variant.js +182 -0
  192. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_traits.js +20 -0
  193. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_variant.js +113 -0
  194. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_player_traits.js +151 -0
  195. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_string_table.js +195 -0
  196. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/index.js +25 -0
  197. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_megalo_game_statistic.js +22 -0
  198. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_megalogamengine_map_permissions.js +22 -0
  199. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_object_filter.js +43 -0
  200. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_trigger.js +63 -0
  201. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/index.js +29 -0
  202. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_actions.js +1640 -0
  203. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_conditions.js +224 -0
  204. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_references.js +508 -0
  205. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_text.js +124 -0
  206. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_custom_game_engine_definition.js +120 -0
  207. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_game_engine_player_rating_parameters.js +58 -0
  208. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_user_defined_option.js +87 -0
  209. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_variable_metadata.js +93 -0
  210. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_variant_variable.js +79 -0
  211. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/index.js +19 -0
  212. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/index.js +17 -0
  213. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/saved_game_files.js +591 -0
  214. package/dist-cjs/blf_chunk.js +139 -0
  215. package/dist-cjs/blffile.js +26 -0
  216. package/dist-cjs/chunk_signature.js +52 -0
  217. package/dist-cjs/chunks/halo3/v12070_08_09_05_2031_halo3_ship/index.js +10 -0
  218. package/dist-cjs/chunks/halo3/v12070_08_09_05_2031_halo3_ship/s_blf_chunk_compressed_data.js +115 -0
  219. package/dist-cjs/chunks/halo3/v12070_08_09_05_2031_halo3_ship/s_blf_chunk_end_of_file.js +75 -0
  220. package/dist-cjs/chunks/halo3/v12070_08_09_05_2031_halo3_ship/s_blf_chunk_start_of_file.js +86 -0
  221. package/dist-cjs/chunks/haloreach/v12065_11_08_24_1738_tu1actual/index.js +23 -0
  222. package/dist-cjs/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_author.js +115 -0
  223. package/dist-cjs/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_compressed_data.js +10 -0
  224. package/dist-cjs/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_content_header.js +81 -0
  225. package/dist-cjs/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_game_variant.js +133 -0
  226. package/dist-cjs/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_packed_game_variant.js +88 -0
  227. package/dist-cjs/decorators.js +75 -0
  228. package/dist-cjs/error.js +10 -0
  229. package/dist-cjs/index.js +53 -0
  230. package/dist-cjs/package.json +1 -0
  231. package/dist-cjs/s_blf_header.js +117 -0
  232. package/dist-cjs/versions/halo3/v12070_08_09_05_2031_halo3_ship.js +20 -0
  233. package/dist-cjs/versions/halo3odst/v13895_09_04_27_2201_atlas_release.js +20 -0
  234. package/dist-cjs/versions/haloreach/v12065_11_08_24_1738_tu1actual.js +25 -0
  235. package/package.json +99 -0
@@ -0,0 +1,330 @@
1
+ import { e_bitstream_byte_fill_direction, e_bitstream_byte_order, e_bitstream_state, } from "./enums";
2
+ import { assert_ok, BitstreamError } from "./errors";
3
+ import { quantize_real } from "./math";
4
+ const { _bitstream_byte_fill_direction_msb_to_lsb, _bitstream_byte_fill_direction_lsb_to_msb, } = e_bitstream_byte_fill_direction;
5
+ export class c_bitstream_writer {
6
+ m_data;
7
+ m_data_size_bytes;
8
+ m_state;
9
+ m_byte_order;
10
+ m_packed_byte_order;
11
+ m_byte_pack_direction;
12
+ m_byte_unpack_direction;
13
+ current_stream_bit_position;
14
+ current_stream_byte_position;
15
+ static new(size, byte_order) {
16
+ return new c_bitstream_writer(size, byte_order, {
17
+ packed_byte_order: byte_order,
18
+ byte_pack_direction: _bitstream_byte_fill_direction_msb_to_lsb,
19
+ byte_unpack_direction: _bitstream_byte_fill_direction_msb_to_lsb,
20
+ });
21
+ }
22
+ /** Use this when dealing with bitstream data from the Halo 3 Beta or prior. */
23
+ static new_with_legacy_settings(size, byte_order) {
24
+ return new c_bitstream_writer(size, byte_order, {
25
+ packed_byte_order: e_bitstream_byte_order.swap(byte_order),
26
+ byte_pack_direction: _bitstream_byte_fill_direction_lsb_to_msb,
27
+ byte_unpack_direction: _bitstream_byte_fill_direction_lsb_to_msb,
28
+ });
29
+ }
30
+ static new_from_instance(size, instance) {
31
+ return new c_bitstream_writer(size, instance.get_byte_order(), {
32
+ packed_byte_order: instance.m_packed_byte_order,
33
+ byte_pack_direction: instance.m_byte_pack_direction,
34
+ byte_unpack_direction: instance.m_byte_unpack_direction,
35
+ });
36
+ }
37
+ constructor(size, byte_order, options) {
38
+ this.m_data = new Uint8Array(size);
39
+ this.m_data_size_bytes = size;
40
+ this.m_state = e_bitstream_state._bitstream_state_initial;
41
+ this.m_byte_order = byte_order;
42
+ this.m_packed_byte_order = options.packed_byte_order;
43
+ this.m_byte_pack_direction = options.byte_pack_direction;
44
+ this.m_byte_unpack_direction = options.byte_unpack_direction;
45
+ this.current_stream_bit_position = 0;
46
+ this.current_stream_byte_position = 0;
47
+ }
48
+ get_byte_order() {
49
+ return this.m_byte_order;
50
+ }
51
+ get_current_offset() {
52
+ return [
53
+ this.current_stream_byte_position,
54
+ this.current_stream_bit_position,
55
+ ];
56
+ }
57
+ write_enum(value, size_in_bits) {
58
+ this.write_integer(value, size_in_bits);
59
+ }
60
+ write_integer(value, size_in_bits) {
61
+ assert_ok(this.writing());
62
+ const bytes = new Uint8Array(4);
63
+ const view = new DataView(bytes.buffer);
64
+ const u = value >>> 0;
65
+ switch (this.m_packed_byte_order) {
66
+ case e_bitstream_byte_order._bitstream_byte_order_little_endian:
67
+ view.setUint32(0, u, true);
68
+ break;
69
+ case e_bitstream_byte_order._bitstream_byte_order_big_endian:
70
+ view.setUint32(0, u, false);
71
+ break;
72
+ }
73
+ this.write_bits_internal(bytes, size_in_bits);
74
+ }
75
+ write_signed_integer(value, size_in_bits) {
76
+ assert_ok(this.writing());
77
+ assert_ok(size_in_bits > 0 && size_in_bits <= 32);
78
+ // Avoid `1 << 31` — JS bitwise ops are 32-bit signed and overflow.
79
+ const maximum = size_in_bits === 32 ? 0x7fffffff : (1 << (size_in_bits - 1)) - 1;
80
+ const minimum = size_in_bits === 32 ? -0x80000000 : ~maximum;
81
+ assert_ok(value >= minimum, "value>=minimum");
82
+ assert_ok(value <= maximum, "value<=maximum");
83
+ this.write_integer(value >>> 0, size_in_bits);
84
+ }
85
+ write_bool(value) {
86
+ this.write_integer(value ? 1 : 0, 1);
87
+ }
88
+ seek_relative(bits) {
89
+ const zero_bytes = new Uint8Array(Math.ceil(bits / 8));
90
+ this.write_bits_internal(zero_bytes, bits);
91
+ }
92
+ write_float(value, size_in_bits) {
93
+ assert_ok(this.writing());
94
+ const bytes = new Uint8Array(4);
95
+ const view = new DataView(bytes.buffer);
96
+ switch (this.m_packed_byte_order) {
97
+ case e_bitstream_byte_order._bitstream_byte_order_little_endian:
98
+ view.setFloat32(0, value, true);
99
+ break;
100
+ case e_bitstream_byte_order._bitstream_byte_order_big_endian:
101
+ view.setFloat32(0, value, false);
102
+ break;
103
+ }
104
+ this.write_bits_internal(bytes, size_in_bits);
105
+ }
106
+ write_raw_data(value, size_in_bits) {
107
+ assert_ok(value.length >= Math.ceil(size_in_bits / 8));
108
+ this.write_bits_internal(value, size_in_bits);
109
+ }
110
+ write_qword(value, size_in_bits) {
111
+ assert_ok(this.writing());
112
+ const bytes = new Uint8Array(8);
113
+ const view = new DataView(bytes.buffer);
114
+ switch (this.m_packed_byte_order) {
115
+ case e_bitstream_byte_order._bitstream_byte_order_little_endian:
116
+ view.setBigUint64(0, value, true);
117
+ break;
118
+ case e_bitstream_byte_order._bitstream_byte_order_big_endian:
119
+ view.setBigUint64(0, value, false);
120
+ break;
121
+ }
122
+ this.write_bits_internal(bytes, size_in_bits);
123
+ }
124
+ write_index(value, max_value, bit_size) {
125
+ assert_ok(value <= max_value);
126
+ if (value === -1) {
127
+ this.write_bool(true);
128
+ }
129
+ else {
130
+ this.write_bool(false);
131
+ this.write_integer(value, bit_size);
132
+ }
133
+ }
134
+ write_quantized_real(value, min_value, max_value, size_in_bits, exact_midpoint, exact_endpoints) {
135
+ const quantized = quantize_real(value, min_value, max_value, 1 << size_in_bits, exact_midpoint, exact_endpoints);
136
+ this.write_integer(quantized, size_in_bits);
137
+ }
138
+ write_point3d(point, axis_encoding_size_in_bits) {
139
+ assert_ok(axis_encoding_size_in_bits > 0 && axis_encoding_size_in_bits <= 32);
140
+ assert_ok(point.x < 1 << axis_encoding_size_in_bits);
141
+ assert_ok(point.y < 1 << axis_encoding_size_in_bits);
142
+ assert_ok(point.z < 1 << axis_encoding_size_in_bits);
143
+ this.write_integer(point.x, axis_encoding_size_in_bits);
144
+ this.write_integer(point.y, axis_encoding_size_in_bits);
145
+ this.write_integer(point.z, axis_encoding_size_in_bits);
146
+ }
147
+ write_point3d_efficient(point, axis_encoding_size_in_bits) {
148
+ assert_ok(axis_encoding_size_in_bits.x > 0 && axis_encoding_size_in_bits.x <= 32);
149
+ assert_ok(axis_encoding_size_in_bits.y > 0 && axis_encoding_size_in_bits.y <= 32);
150
+ assert_ok(axis_encoding_size_in_bits.z > 0 && axis_encoding_size_in_bits.z <= 32);
151
+ assert_ok(point.x >>> 0 < 1 << axis_encoding_size_in_bits.x);
152
+ assert_ok(point.y >>> 0 < 1 << axis_encoding_size_in_bits.y);
153
+ assert_ok(point.z >>> 0 < 1 << axis_encoding_size_in_bits.z);
154
+ this.write_integer(point.x, axis_encoding_size_in_bits.x);
155
+ this.write_integer(point.y, axis_encoding_size_in_bits.y);
156
+ this.write_integer(point.z, axis_encoding_size_in_bits.z);
157
+ }
158
+ /** Writes raw UTF-8 bytes + NUL (matches blf_lib `String::as_bytes()`). */
159
+ write_string_utf8(char_string, max_string_size) {
160
+ assert_ok(this.writing());
161
+ assert_ok(max_string_size > 0);
162
+ const bytes = new TextEncoder().encode(char_string);
163
+ assert_ok(bytes.length <= max_string_size);
164
+ for (const byte of bytes) {
165
+ this.write_value_internal(new Uint8Array([byte]), 8);
166
+ }
167
+ this.write_value_internal(new Uint8Array([0]), 8);
168
+ }
169
+ write_string_extended_ascii(char_string, max_string_size) {
170
+ assert_ok(this.writing());
171
+ assert_ok(max_string_size > 0);
172
+ assert_ok(char_string.length <= max_string_size);
173
+ for (const ch of char_string) {
174
+ const code = ch.codePointAt(0);
175
+ if (code > 0xff) {
176
+ throw new BitstreamError(`Cannot encode non-Latin-1 char: ${ch}`);
177
+ }
178
+ this.write_value_internal(new Uint8Array([code]), 8);
179
+ }
180
+ this.write_value_internal(new Uint8Array([0]), 8);
181
+ }
182
+ write_string_wchar(value, max_string_size) {
183
+ assert_ok(this.writing());
184
+ assert_ok(max_string_size > 0);
185
+ assert_ok(value.length <= max_string_size);
186
+ for (let i = 0; i < value.length; i++) {
187
+ const code = value.charCodeAt(i);
188
+ const bytes = new Uint8Array(2);
189
+ const view = new DataView(bytes.buffer);
190
+ switch (this.m_packed_byte_order) {
191
+ case e_bitstream_byte_order._bitstream_byte_order_little_endian:
192
+ view.setUint16(0, code, true);
193
+ break;
194
+ case e_bitstream_byte_order._bitstream_byte_order_big_endian:
195
+ view.setUint16(0, code, false);
196
+ break;
197
+ }
198
+ this.write_value_internal(bytes, 16);
199
+ }
200
+ this.write_value_internal(new Uint8Array(2), 16);
201
+ }
202
+ begin_writing() {
203
+ this.reset(e_bitstream_state._bitstream_state_writing);
204
+ }
205
+ writing() {
206
+ return this.m_state === e_bitstream_state._bitstream_state_writing;
207
+ }
208
+ finish_writing() {
209
+ this.m_state = e_bitstream_state._bitstream_state_write_finished;
210
+ this.m_data_size_bytes = Math.ceil((this.current_stream_byte_position * 8 +
211
+ this.current_stream_bit_position) /
212
+ 8);
213
+ }
214
+ get_data() {
215
+ assert_ok(!this.writing());
216
+ return this.m_data.slice(0, this.m_data_size_bytes);
217
+ }
218
+ write_value_internal(data, size_in_bits) {
219
+ this.write_bits_internal(data, size_in_bits);
220
+ }
221
+ write_bits_internal(data, size_in_bits) {
222
+ const size_in_bytes = Math.ceil(size_in_bits / 8);
223
+ if (data.length < size_in_bytes) {
224
+ throw new BitstreamError(`Tried to write ${size_in_bits} bits but only ${data.length * 8} were provided`);
225
+ }
226
+ const surplus_bytes = data.length - size_in_bytes;
227
+ const surplus_bits = (data.length * 8 - size_in_bits) % 8;
228
+ let remaining_bits_to_write = size_in_bits;
229
+ while (remaining_bits_to_write > 0) {
230
+ const bytes_written = Math.floor((size_in_bits - remaining_bits_to_write) / 8);
231
+ let bits_written = 0;
232
+ let writing_byte;
233
+ switch (this.m_packed_byte_order) {
234
+ case e_bitstream_byte_order._bitstream_byte_order_little_endian:
235
+ if (remaining_bits_to_write < 8) {
236
+ writing_byte =
237
+ (data[bytes_written] << (8 - remaining_bits_to_write)) & 0xff;
238
+ }
239
+ else {
240
+ writing_byte = data[bytes_written];
241
+ }
242
+ break;
243
+ case e_bitstream_byte_order._bitstream_byte_order_big_endian: {
244
+ let bits = (data[bytes_written + surplus_bytes] << surplus_bits) & 0xff;
245
+ if (surplus_bits !== 0 &&
246
+ remaining_bits_to_write > 8 - surplus_bits) {
247
+ bits |=
248
+ (data[bytes_written + surplus_bytes + 1] >> (8 - surplus_bits)) &
249
+ 0xff;
250
+ }
251
+ writing_byte = bits;
252
+ break;
253
+ }
254
+ }
255
+ writing_byte &= 0xff << (8 - Math.min(8, remaining_bits_to_write));
256
+ const writing_bits_at_position = Math.min(8 - this.current_stream_bit_position, remaining_bits_to_write);
257
+ const remaining_bits_at_position = 8 - this.current_stream_bit_position;
258
+ let bits;
259
+ switch (this.m_byte_unpack_direction) {
260
+ case _bitstream_byte_fill_direction_lsb_to_msb:
261
+ bits =
262
+ (writing_byte <<
263
+ (Math.min(8, remaining_bits_to_write) -
264
+ writing_bits_at_position)) &
265
+ 0xff;
266
+ break;
267
+ case _bitstream_byte_fill_direction_msb_to_lsb:
268
+ bits = writing_byte & (0xff << (8 - writing_bits_at_position));
269
+ break;
270
+ }
271
+ switch (this.m_byte_pack_direction) {
272
+ case _bitstream_byte_fill_direction_lsb_to_msb:
273
+ bits >>>=
274
+ 8 - (this.current_stream_bit_position + writing_bits_at_position);
275
+ break;
276
+ case _bitstream_byte_fill_direction_msb_to_lsb:
277
+ bits >>>= this.current_stream_bit_position;
278
+ break;
279
+ }
280
+ this.ensure_byte_capacity(this.current_stream_byte_position);
281
+ this.m_data[this.current_stream_byte_position] |= bits;
282
+ bits_written += writing_bits_at_position;
283
+ if (writing_bits_at_position === remaining_bits_at_position) {
284
+ this.current_stream_bit_position = 0;
285
+ this.current_stream_byte_position += 1;
286
+ }
287
+ else {
288
+ this.current_stream_bit_position += writing_bits_at_position;
289
+ }
290
+ remaining_bits_to_write -= writing_bits_at_position;
291
+ if (remaining_bits_to_write > 0 && bits_written < 8) {
292
+ const extra_bits_at_position = Math.min(remaining_bits_to_write, 8 - bits_written);
293
+ let extra_bits;
294
+ switch (this.m_byte_unpack_direction) {
295
+ case _bitstream_byte_fill_direction_lsb_to_msb:
296
+ extra_bits = writing_byte & (0xff << (8 - extra_bits_at_position));
297
+ break;
298
+ case _bitstream_byte_fill_direction_msb_to_lsb:
299
+ extra_bits = (writing_byte << bits_written) & 0xff;
300
+ break;
301
+ }
302
+ if (this.m_byte_pack_direction ===
303
+ _bitstream_byte_fill_direction_lsb_to_msb) {
304
+ extra_bits >>>= 8 - extra_bits_at_position;
305
+ }
306
+ this.ensure_byte_capacity(this.current_stream_byte_position);
307
+ this.m_data[this.current_stream_byte_position] |= extra_bits;
308
+ bits_written += extra_bits_at_position;
309
+ this.current_stream_bit_position = extra_bits_at_position;
310
+ remaining_bits_to_write -= extra_bits_at_position;
311
+ }
312
+ }
313
+ }
314
+ ensure_byte_capacity(byte_index) {
315
+ if (byte_index < this.m_data.length) {
316
+ return;
317
+ }
318
+ const new_size = Math.max(this.m_data.length * 2, byte_index + 1);
319
+ const grown = new Uint8Array(new_size);
320
+ grown.set(this.m_data);
321
+ this.m_data = grown;
322
+ this.m_data_size_bytes = new_size;
323
+ }
324
+ reset(state) {
325
+ this.m_state = state;
326
+ this.current_stream_bit_position = 0;
327
+ this.current_stream_byte_position = 0;
328
+ this.m_data.fill(0);
329
+ }
330
+ }
@@ -0,0 +1,2 @@
1
+ export * from "./security_functions";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/blam/common/cache/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1 @@
1
+ export * from "./security_functions";
@@ -0,0 +1,2 @@
1
+ export declare function security_calculate_hash(data: Uint8Array): Uint8Array;
2
+ //# sourceMappingURL=security_functions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security_functions.d.ts","sourceRoot":"","sources":["../../../../src/blam/common/cache/security_functions.ts"],"names":[],"mappings":"AAcA,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAGpE"}
@@ -0,0 +1,19 @@
1
+ import { sha1 } from "js-sha1";
2
+ const GEN3_SALT = hex_to_bytes("EDD43009666D5C4A5C3657FAB40E022F535AC6C9EE471F01F1A44756B7714F1C36EC");
3
+ function hex_to_bytes(hex) {
4
+ const out = new Uint8Array(hex.length / 2);
5
+ for (let i = 0; i < out.length; i++) {
6
+ out[i] = Number.parseInt(hex.slice(i * 2, i * 2 + 2), 16);
7
+ }
8
+ return out;
9
+ }
10
+ export function security_calculate_hash(data) {
11
+ const digest = sha1.arrayBuffer(concat(GEN3_SALT, data));
12
+ return new Uint8Array(digest);
13
+ }
14
+ function concat(a, b) {
15
+ const out = new Uint8Array(a.length + b.length);
16
+ out.set(a, 0);
17
+ out.set(b, a.length);
18
+ return out;
19
+ }
@@ -0,0 +1,3 @@
1
+ export * from "./cache";
2
+ export * from "./memory";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/blam/common/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./cache";
2
+ export * from "./memory";
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Zlib (RFC 1950) compression matching blf_lib `runtime_data_compress`:
3
+ * `Compress::new_with_window_bits(Compression::new(9), true, 15)` via flate2+zlib.
4
+ */
5
+ export declare function zlib_compress(data: Uint8Array): Uint8Array;
6
+ /** Reach runtime blob: BE `u32` uncompressed size + zlib payload. */
7
+ export declare function runtime_data_compress(source: Uint8Array, big_endian?: boolean): Uint8Array;
8
+ /** Reach runtime blob: BE `u32` uncompressed size + zlib payload. */
9
+ export declare function runtime_data_decompress(source: Uint8Array, big_endian?: boolean): Uint8Array;
10
+ //# sourceMappingURL=data_compress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data_compress.d.ts","sourceRoot":"","sources":["../../../../src/blam/common/memory/data_compress.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAM1D;AAED,qEAAqE;AACrE,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,UAAU,EAClB,UAAU,UAAO,GAChB,UAAU,CAMZ;AAED,qEAAqE;AACrE,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,UAAU,EAClB,UAAU,UAAO,GAChB,UAAU,CAOZ"}
@@ -0,0 +1,28 @@
1
+ import { deflate, inflate } from "pako";
2
+ import { BlfError } from "../../../error";
3
+ /**
4
+ * Zlib (RFC 1950) compression matching blf_lib `runtime_data_compress`:
5
+ * `Compress::new_with_window_bits(Compression::new(9), true, 15)` via flate2+zlib.
6
+ */
7
+ export function zlib_compress(data) {
8
+ return deflate(data, {
9
+ level: 9,
10
+ windowBits: 15,
11
+ memLevel: 8,
12
+ });
13
+ }
14
+ /** Reach runtime blob: BE `u32` uncompressed size + zlib payload. */
15
+ export function runtime_data_compress(source, big_endian = true) {
16
+ const compressed = zlib_compress(source);
17
+ const out = new Uint8Array(4 + compressed.length);
18
+ new DataView(out.buffer).setUint32(0, source.length, !big_endian);
19
+ out.set(compressed, 4);
20
+ return out;
21
+ }
22
+ /** Reach runtime blob: BE `u32` uncompressed size + zlib payload. */
23
+ export function runtime_data_decompress(source, big_endian = true) {
24
+ if (source.length < 4) {
25
+ throw new BlfError(`runtime_data_decompress needs at least 4 bytes, got ${source.length}`);
26
+ }
27
+ return inflate(source.subarray(4));
28
+ }
@@ -0,0 +1,2 @@
1
+ export * from "./data_compress";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/blam/common/memory/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1 @@
1
+ export * from "./data_compress";
@@ -0,0 +1,37 @@
1
+ import type { c_bitstream_reader, c_bitstream_writer } from "../../../../bitstream";
2
+ import { c_game_engine_custom_variant_au1_settings } from "./c_game_engine_custom_variant_au1_settings";
3
+ import { c_game_engine_base_variant } from "./c_game_engine_default";
4
+ import { s_player_trait_option } from "./c_game_engine_traits";
5
+ import { c_string_table } from "./c_string_table";
6
+ import { c_megalogamengine_map_permissions } from "./megalogamengine/c_megalogamengine_map_permissions";
7
+ import { s_custom_game_engine_definition } from "./megalogamengine/s_custom_game_engine_definition";
8
+ import { s_game_engine_player_rating_parameters } from "./megalogamengine/s_game_engine_player_rating_parameters";
9
+ import { s_user_defined_option } from "./megalogamengine/s_user_defined_option";
10
+ export declare class c_game_engine_custom_variant {
11
+ m_encoding_version: number;
12
+ m_build_number: number;
13
+ m_base_variant: c_game_engine_base_variant;
14
+ m_player_traits: s_player_trait_option[];
15
+ m_user_defined_options: s_user_defined_option[];
16
+ m_script_strings: c_string_table;
17
+ m_base_name_string_index: number;
18
+ m_localized_name: c_string_table;
19
+ m_localized_description: c_string_table;
20
+ m_localized_category: c_string_table;
21
+ m_engine_icon: number;
22
+ m_engine_category: number;
23
+ m_map_permissions: c_megalogamengine_map_permissions;
24
+ m_player_ratings: s_game_engine_player_rating_parameters;
25
+ m_score_to_win_round: number;
26
+ m_fire_teams_enabled: boolean;
27
+ m_symmetric_gametype: boolean;
28
+ m_base_variant_parameters_locked: boolean[];
29
+ m_base_variant_parameters_hidden: boolean[];
30
+ m_user_defined_options_locked: boolean[];
31
+ m_user_defined_options_hidden: boolean[];
32
+ m_game_engine: s_custom_game_engine_definition;
33
+ m_au1_settings?: c_game_engine_custom_variant_au1_settings;
34
+ decode(bitstream: c_bitstream_reader): void;
35
+ encode(bitstream: c_bitstream_writer): void;
36
+ }
37
+ //# sourceMappingURL=c_game_engine_custom_variant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"c_game_engine_custom_variant.d.ts","sourceRoot":"","sources":["../../../../../src/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_custom_variant.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,yCAAyC,EAAE,MAAM,6CAA6C,CAAC;AACxG,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,iCAAiC,EAAE,MAAM,qDAAqD,CAAC;AACxG,OAAO,EAAE,+BAA+B,EAAE,MAAM,mDAAmD,CAAC;AACpG,OAAO,EAAE,sCAAsC,EAAE,MAAM,0DAA0D,CAAC;AAClH,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAEhF,qBAAa,4BAA4B;IACvC,kBAAkB,SAAK;IACvB,cAAc,SAAK;IACnB,cAAc,6BAAoC;IAClD,eAAe,EAAE,qBAAqB,EAAE,CAAM;IAC9C,sBAAsB,EAAE,qBAAqB,EAAE,CAAM;IACrD,gBAAgB,iBAA8C;IAC9D,wBAAwB,SAAK;IAC7B,gBAAgB,iBAAyC;IACzD,uBAAuB,iBAA2C;IAClE,oBAAoB,iBAAyC;IAC7D,aAAa,SAAK;IAClB,iBAAiB,SAAK;IACtB,iBAAiB,oCAA2C;IAC5D,gBAAgB,yCAAgD;IAChE,oBAAoB,SAAK;IACzB,oBAAoB,UAAS;IAC7B,oBAAoB,UAAS;IAC7B,gCAAgC,EAAE,OAAO,EAAE,CAGzC;IACF,gCAAgC,EAAE,OAAO,EAAE,CAGzC;IACF,6BAA6B,EAAE,OAAO,EAAE,CAGtC;IACF,6BAA6B,EAAE,OAAO,EAAE,CAGtC;IACF,aAAa,kCAAyC;IACtD,cAAc,CAAC,EAAE,yCAAyC,CAAC;IAE3D,MAAM,CAAC,SAAS,EAAE,kBAAkB,GAAG,IAAI;IA0E3C,MAAM,CAAC,SAAS,EAAE,kBAAkB,GAAG,IAAI;CA8C5C"}
@@ -0,0 +1,125 @@
1
+ import { BlfError } from "../../../../error";
2
+ import { c_game_engine_custom_variant_au1_settings } from "./c_game_engine_custom_variant_au1_settings";
3
+ import { c_game_engine_base_variant } from "./c_game_engine_default";
4
+ import { s_player_trait_option } from "./c_game_engine_traits";
5
+ import { c_string_table } from "./c_string_table";
6
+ import { c_megalogamengine_map_permissions } from "./megalogamengine/c_megalogamengine_map_permissions";
7
+ import { s_custom_game_engine_definition } from "./megalogamengine/s_custom_game_engine_definition";
8
+ import { s_game_engine_player_rating_parameters } from "./megalogamengine/s_game_engine_player_rating_parameters";
9
+ import { s_user_defined_option } from "./megalogamengine/s_user_defined_option";
10
+ export class c_game_engine_custom_variant {
11
+ m_encoding_version = 0;
12
+ m_build_number = 0;
13
+ m_base_variant = new c_game_engine_base_variant();
14
+ m_player_traits = [];
15
+ m_user_defined_options = [];
16
+ m_script_strings = new c_string_table(112, 0x4c00, 15, 15, 7);
17
+ m_base_name_string_index = 0;
18
+ m_localized_name = new c_string_table(1, 0x180, 9, 9, 1);
19
+ m_localized_description = new c_string_table(1, 0xc00, 12, 12, 1);
20
+ m_localized_category = new c_string_table(1, 0x180, 9, 9, 1);
21
+ m_engine_icon = 0;
22
+ m_engine_category = 0;
23
+ m_map_permissions = new c_megalogamengine_map_permissions();
24
+ m_player_ratings = new s_game_engine_player_rating_parameters();
25
+ m_score_to_win_round = 0;
26
+ m_fire_teams_enabled = false;
27
+ m_symmetric_gametype = false;
28
+ m_base_variant_parameters_locked = Array.from({ length: 1280 }, () => false);
29
+ m_base_variant_parameters_hidden = Array.from({ length: 1280 }, () => false);
30
+ m_user_defined_options_locked = Array.from({ length: 32 }, () => false);
31
+ m_user_defined_options_hidden = Array.from({ length: 32 }, () => false);
32
+ m_game_engine = new s_custom_game_engine_definition();
33
+ m_au1_settings;
34
+ decode(bitstream) {
35
+ this.m_encoding_version = bitstream.read_signed_integer("encoding-version", 32);
36
+ this.m_build_number = bitstream.read_signed_integer("version", 32);
37
+ this.m_base_variant.decode(bitstream);
38
+ const player_trait_count = bitstream.read_integer("player-trait-count", 5);
39
+ for (let i = 0; i < player_trait_count; i++) {
40
+ const traits = new s_player_trait_option();
41
+ traits.decode(bitstream);
42
+ this.m_player_traits.push(traits);
43
+ }
44
+ const user_defined_option_count = bitstream.read_integer("user-defined-option-count", 5);
45
+ for (let i = 0; i < user_defined_option_count; i++) {
46
+ const option = new s_user_defined_option();
47
+ option.decode(bitstream);
48
+ this.m_user_defined_options.push(option);
49
+ }
50
+ this.m_script_strings.decode(bitstream);
51
+ this.m_base_name_string_index = bitstream.read_integer("base-name-string-index", 7);
52
+ this.m_localized_name.decode(bitstream);
53
+ this.m_localized_description.decode(bitstream);
54
+ this.m_localized_category.decode(bitstream);
55
+ this.m_engine_icon = bitstream.read_integer("engine-icon-index", 5);
56
+ this.m_engine_category = bitstream.read_integer("engine-category", 5);
57
+ this.m_map_permissions.decode(bitstream);
58
+ this.m_player_ratings.decode(bitstream);
59
+ this.m_score_to_win_round = bitstream.read_signed_integer("score-to-win-round", 16);
60
+ this.m_fire_teams_enabled = bitstream.read_bool("fire-teams-enabled");
61
+ this.m_symmetric_gametype = bitstream.read_bool("symmetric-gametype");
62
+ for (let i = 0; i < 1280; i++) {
63
+ this.m_base_variant_parameters_locked[i] = bitstream.read_bool("base-variant-parameters-locked");
64
+ }
65
+ for (let i = 0; i < 1280; i++) {
66
+ this.m_base_variant_parameters_hidden[i] = bitstream.read_bool("base-variant-parameters-hidden");
67
+ }
68
+ for (let i = 0; i < 32; i++) {
69
+ this.m_user_defined_options_locked[i] = bitstream.read_bool("user-defined-options-locked");
70
+ }
71
+ for (let i = 0; i < 32; i++) {
72
+ this.m_user_defined_options_hidden[i] = bitstream.read_bool("user-defined-options-hidden");
73
+ }
74
+ this.m_game_engine.decode(bitstream);
75
+ if (this.m_encoding_version > 106) {
76
+ const au1 = new c_game_engine_custom_variant_au1_settings();
77
+ au1.decode(bitstream);
78
+ this.m_au1_settings = au1;
79
+ }
80
+ }
81
+ encode(bitstream) {
82
+ bitstream.write_signed_integer(this.m_encoding_version, 32);
83
+ bitstream.write_signed_integer(this.m_build_number, 32);
84
+ this.m_base_variant.encode(bitstream);
85
+ bitstream.write_integer(this.m_player_traits.length, 5);
86
+ for (const player_trait of this.m_player_traits) {
87
+ player_trait.encode(bitstream);
88
+ }
89
+ bitstream.write_integer(this.m_user_defined_options.length, 5);
90
+ for (const option of this.m_user_defined_options) {
91
+ option.encode(bitstream);
92
+ }
93
+ this.m_script_strings.encode(bitstream);
94
+ bitstream.write_integer(this.m_base_name_string_index, 7);
95
+ this.m_localized_name.encode(bitstream);
96
+ this.m_localized_description.encode(bitstream);
97
+ this.m_localized_category.encode(bitstream);
98
+ bitstream.write_integer(this.m_engine_icon, 5);
99
+ bitstream.write_integer(this.m_engine_category, 5);
100
+ this.m_map_permissions.encode(bitstream);
101
+ this.m_player_ratings.encode(bitstream);
102
+ bitstream.write_signed_integer(this.m_score_to_win_round, 16);
103
+ bitstream.write_bool(this.m_fire_teams_enabled);
104
+ bitstream.write_bool(this.m_symmetric_gametype);
105
+ for (const parameter of this.m_base_variant_parameters_locked) {
106
+ bitstream.write_bool(parameter);
107
+ }
108
+ for (const parameter of this.m_base_variant_parameters_hidden) {
109
+ bitstream.write_bool(parameter);
110
+ }
111
+ for (const parameter of this.m_user_defined_options_locked) {
112
+ bitstream.write_bool(parameter);
113
+ }
114
+ for (const parameter of this.m_user_defined_options_hidden) {
115
+ bitstream.write_bool(parameter);
116
+ }
117
+ this.m_game_engine.encode(bitstream);
118
+ if (this.m_encoding_version > 106) {
119
+ if (!this.m_au1_settings) {
120
+ throw new BlfError("Writing v107 gametypes (and higher) requires AU1 Options to be set.");
121
+ }
122
+ this.m_au1_settings.encode(bitstream);
123
+ }
124
+ }
125
+ }
@@ -0,0 +1,14 @@
1
+ import type { c_bitstream_reader, c_bitstream_writer } from "../../../../bitstream";
2
+ export declare class c_game_engine_custom_variant_au1_settings {
3
+ m_flags: number;
4
+ m_precision_bloom: number;
5
+ m_active_camo_energy_curve_min: number;
6
+ m_active_camo_energy_curve_max: number;
7
+ m_armor_lock_damage_drain: number;
8
+ m_armor_lock_damage_drain_limit: number;
9
+ m_magnum_damage: number;
10
+ m_magnum_fire_delay: number;
11
+ decode(bitstream: c_bitstream_reader): void;
12
+ encode(bitstream: c_bitstream_writer): void;
13
+ }
14
+ //# sourceMappingURL=c_game_engine_custom_variant_au1_settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"c_game_engine_custom_variant_au1_settings.d.ts","sourceRoot":"","sources":["../../../../../src/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_custom_variant_au1_settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAE/B,qBAAa,yCAAyC;IACpD,OAAO,SAAK;IACZ,iBAAiB,SAAK;IACtB,8BAA8B,SAAK;IACnC,8BAA8B,SAAK;IACnC,yBAAyB,SAAK;IAC9B,+BAA+B,SAAK;IACpC,eAAe,SAAK;IACpB,mBAAmB,SAAK;IAExB,MAAM,CAAC,SAAS,EAAE,kBAAkB,GAAG,IAAI;IA+C3C,MAAM,CAAC,SAAS,EAAE,kBAAkB,GAAG,IAAI;CAoD5C"}
@@ -0,0 +1,30 @@
1
+ export class c_game_engine_custom_variant_au1_settings {
2
+ m_flags = 0;
3
+ m_precision_bloom = 0;
4
+ m_active_camo_energy_curve_min = 0;
5
+ m_active_camo_energy_curve_max = 0;
6
+ m_armor_lock_damage_drain = 0;
7
+ m_armor_lock_damage_drain_limit = 0;
8
+ m_magnum_damage = 0;
9
+ m_magnum_fire_delay = 0;
10
+ decode(bitstream) {
11
+ this.m_flags = bitstream.read_integer("flags", 32);
12
+ this.m_precision_bloom = bitstream.read_quantized_real(0, 2, 8, false, true);
13
+ this.m_active_camo_energy_curve_min = bitstream.read_quantized_real(0, 2, 8, false, true);
14
+ this.m_active_camo_energy_curve_max = bitstream.read_quantized_real(0, 2, 8, false, true);
15
+ this.m_armor_lock_damage_drain = bitstream.read_quantized_real(0, 2, 8, false, true);
16
+ this.m_armor_lock_damage_drain_limit = bitstream.read_quantized_real(0, 2, 8, false, true);
17
+ this.m_magnum_damage = bitstream.read_quantized_real(0, 10, 8, false, true);
18
+ this.m_magnum_fire_delay = bitstream.read_quantized_real(0, 10, 8, false, true);
19
+ }
20
+ encode(bitstream) {
21
+ bitstream.write_integer(this.m_flags, 32);
22
+ bitstream.write_quantized_real(this.m_precision_bloom, 0, 2, 8, false, true);
23
+ bitstream.write_quantized_real(this.m_active_camo_energy_curve_min, 0, 2, 8, false, true);
24
+ bitstream.write_quantized_real(this.m_active_camo_energy_curve_max, 0, 2, 8, false, true);
25
+ bitstream.write_quantized_real(this.m_armor_lock_damage_drain, 0, 2, 8, false, true);
26
+ bitstream.write_quantized_real(this.m_armor_lock_damage_drain_limit, 0, 2, 8, false, true);
27
+ bitstream.write_quantized_real(this.m_magnum_damage, 0, 10, 8, false, true);
28
+ bitstream.write_quantized_real(this.m_magnum_fire_delay, 0, 10, 8, false, true);
29
+ }
30
+ }