Skip to content

Releases: DavidJCobb/ReachVariantEditor

v2.2.5 Mirror

16 Jun 03:20
Compare
Choose a tag to compare

Version 2.2.5, mirrored here for those unable to obtain it from NexusMods.

Changes

Compiler

  • Fixed a bug introduced in v2.2.3 that caused aliases to remain in-scope even after their containing block ended (i.e. block-scoping was completely broken).
  • Fixed a crash that could occur if a script tried to implicitly define new Forge labels when the gametype's string table was already full.
  • Added support and appropriate warnings for Firefight incident IDs and names in non-Firefight gametypes.
  • You can now use player.money as a setter. The player.increment_req_money_by action has been removed.

Other

  • The program now properly loads its settings from its own directory and not the current working directory. This fix will mainly be relevant if you opened gametypes by dragging and dropping the files into RVT.
  • You can now set the "Damage Multiplier" player traits to "Instant Kill."
  • Fixed a regression that made it impossible to set a team's initial designator to "None" (previously -1 in the old UI).
  • When editing Firefight variants, the UI no longer hides the Vehicle Set and Indestructible Vehicle options, as they are known to be functional on the latest MCC Reach build.
  • The UI now properly displays the "Sharpshooter" loadout's name. Previously, it was erroneously listed under the name "Expert."
  • The vast majority of Option Visibility toggles are now identified, though the vast majority of them are also completely unused.

Documentation

  • More precise information on the effects of various Firefight Wave Traits.
  • More accurate information on various Megalo-accessible object types.
  • The incident lists now show each incident's numeric ID. When writing gametype scripts, you can use incident names or incident IDs interchangeably.
  • Corrections to under-the-hood information, and more fleshed-out documentation on potential trigger optimizations.

v2.2.4 Mirror

03 Jan 18:33
Compare
Choose a tag to compare

Version 2.2.4, mirrored here for those unable to obtain it from NexusMods.

Changes

Compiler

  • game.sudden_death_timer is no longer treated as read-only.
  • When setting waypoint icons, attack is now a synonym for ordnance.
  • If your game variant has n many scripted player traits, then the highest valid index into script_traits is n - 1. If you mistakenly access script_traits[n], you will no longer be told that n is the highest valid index.

Other

  • The unidentified 3 value for Team Scoring Method is now selectable in the UI again.

Documentation

  • The damaged variant string is now described as only working on Pelicans.
  • The space variant string is now described as being able to create Covenant Jetpacks.
  • The phantom object type is now described as being usable, though players cannot actually pilot Phantoms in Multiplayer yet.
  • Fixed an issue where the number of nested timer variables listed on various handle types was always 0.
  • Fixed several outdated references to Megalo's true form not being known to the public; with the official release of MegaloEdit, we can now see Megalo as Bungie and 343 Industries did.
  • Fixed outdated references to Network Test 1 (PvP-only Generator Defense in the Halo: Reach Beta) being impossible to recreate; MCC's new "Waves" Firefight option allows us to recreate 99% of the functionality.
  • Noted that the Grenade Regeneration player trait has no effect in Firefight.
  • Fixed typos.

v2.2.3 Mirror

06 Aug 02:13
Compare
Choose a tag to compare

Version 2.2.3, mirrored here for those unable to obtain it from NexusMods.

Changes

Compiler

  • Fixed a crash that could occur when compiling empty if-statements, empty blocks with inline specifiers, or if-statements containing only script instructions that had some sort of compiler error.
  • Block comments at the end of a script file should no longer trigger a compiler error.
  • Top-level alt and altif blocks should now compile properly. Previously, the compiler mishandled them, so they'd compile as if you wrote multiple if blocks instead.
  • Added reinforcements as an alternate name for the firefight_lives_added sound. it appears that this sound entry maps to different sounds in the Xbox 360 and Master Chief Collection versions of Halo: Reach.
  • The unused inv_boneyard_vo_spartan_p4_start sound is now usable.
  • The unused inv_spire_vo_covenant_p3_loss sound has been renamed to inv_spire_vo_covenant_p4_start.
  • object.apply_shape_color_from_player_member should now accept none as an argument.

Other

  • The UI now shows named values for each team's Initial Designator.
  • The UI now shows named values for the Team Designator Switch Type option.
  • The UI now properly identifies Firefight's unused "Bonus Target" option.
  • Corrected the name of the Ability Usage player trait's "Not With Objectives" value based on a look at the Halo: Reach Editing Kit.
  • Identified the Double Jump option and its values based on a look at the Halo: Reach Editing Kit. (Don't get excited by that name; in my tests, the option has never worked.)
  • The unused, non-functional Assassin skull is now available for use in Firefight.
  • The Blind skull is now available for use in Firefight.

Documentation

  • Corrected documentation for the XOR operator, the object.set_progress_bar function, and the Team Scoring option.
  • The "Network Test 1" Firefight option is now documented.
  • Fixed formatting issues with the documentation, including a lack of formatting on some tables.

v2.2.2 Mirror

04 Aug 00:00
Compare
Choose a tag to compare

Version 2.2.2, mirrored here for those unable to obtain it from NexusMods.

Changes

  • Auto-detection for MCC"s install location should be working again.

v2.2.1 Mirror

03 Aug 23:47
Compare
Choose a tag to compare

Version 2.2.1, mirrored here for those unable to obtain it from NexusMods.

Changes

  • Critical bugfixes for converting MGLO files to BIN files. Some missing data was not written, resulting in MCC refusing to recognize the resulting files as valid.

v2.2.0 Mirror

03 Aug 22:24
Compare
Choose a tag to compare

Version 2.2.0, mirrored here for those unable to obtain it from NexusMods.

Changes

  • You can now download ReachVariantTool as a portable app, as before, or packaged in a formal installer (built with Inno Setup). The latter will run the bundled MSVC++ Redistributable setup program if your system needs that.
  • Added support for the new "Waves" Firefight option that 343i added to the Master Chief Collection version of Halo: Reach. This option emulates the Network Test 1 behavior from the Halo: Reach Beta.
  • Added support for several script functions and script behaviors that 343i added to the Master Chief Collection version of Halo: Reach, all backported from Halo 4. This includes a few new script functions, math operators (bitshifts and absolute value), variant ID strings, inlined trigger data (the begin opcode in MegaloEdit), and support for temporary variables. New functions include: game.hs_function_call; object.set_hidden; player.get_button_press_duration; player.set_vehicle_spawning_enabled; player.set_respawn_vehicle; team.set_vehicle_spawning_enabled; team.set_respawn_vehicle.
  • ReachVariantTool can now load and save *.mglo files. These files are compatible with Halo: The Master Chief Collection's "Hot Reload" feature, which can be useful for testing a gametype as you work on it.
  • The Team Scoring Type option's values are now known (Sum, Minimum, and Maximum) and are shown properly in the editor.
  • Fixed internal handling of certain floating-point values, particularly with respect to TU1 options. Documented the effects of floating-point imprecision in the help manual.
  • Fixed INI settings related to the code editor and syntax highlighting: the default values should no longer break user-authored themes.
  • Fixed the settings for setting your default open/save directory.
  • Added a feature to the script string editor that allows you to preview how the string would look as gametype objective text (the "round card" shown at the start of each round). Since this text gets truncated to 116 characters in-game, and isn't automatically word-wrapped, this preview feature can help you know where to insert line breaks manually. The preview initially shows the first non-blank localization for a string, and afterwards will live-update to match whichever localization you edit. Please be aware that due to fundamental differences in text rendering between Qt, typical Windows programs generally, and Halo: Reach, the line lengths shown won't exactly match those in-game. It should be accurate enough if you don't try to press your text right up against the round card's right-side border.
  • The script editing window now has an "Info" button at the bottom, near the file size usage meter. Clicking this button will toggle the display of additional meters, showing the counts versus maximums of several counted elements in your gametype (e.g. script actions, player traits, strings, Forge labels, etc.).
  • The compiler now supports Lua-style block comments.
  • The compiler will now automatically create Forge labels for you when possible, if your script refers to a Forge label name that you haven't yet defined in the editor.
  • The compiler now performs type-checking on comparisons and assignments, and also only allows operators that are appropriate for the types being used. Previous versions allowed syntax like current_player.team > team[3], but that syntax is incorrect and does not execute as intended in-game. Some type-mismatched comparisons and assignments cause crashes in-game; others almost work, but only by happenstance, while breaking in counterintuitive ways that may not come up when testing your scripts. The documentation for operators describes what operations are necessary (numbers and timers are interchangeable; nothing else is; and numeric operations only work on numbers and timers).
  • The compiler now allows you to auto-assign variables to aliases using a new syntax. For example, alias foo = allocate player.number will automatically select the first player.number variable that isn't already referred to by an in-scope alias. There is a special syntax for the new temporary variables in MCC: alias foo = allocate temporary number. Please be aware that there is a limit on how many temporary variables you can use simultaneously, and this limit will be lower than in the official MegaloEdit tool due to weaknesses in ReachVariantTool's design.
  • The compiler should now warn if you use "transient" variables (e.g. current_player) in a format string that a function (like widget.set_text) will treat as "persistent."
  • The hud_target_player_team built-in variable has been renamed to hud_target_team.
  • The hud_target_object_team and unk_15_team built-in variables never actually existed and were the result of mistakes during RVT's development. They have been removed; the compiler no longer recognizes them as valid. If you compiled scripts with these, then prior to the mid-July 2023 MCC update, your scripts would've been using hud_target_team as a lucky side effect of how Halo: Reach is compiled, so you'll want to switch to using that variable instead.
  • Fixed a compiler bug where references to no_object, no_team, or no_player would generate variable declarations for global.object[0], global.team[0], or global.player[0], even if you never used those variables. Theoretically, references to team[0] and player[0] could have caused a similar issue.
  • Fixed a compiler oversight: event listener notation must now appear directly before a block. Previously, it could appear anywhere and would affect the next block.
  • Fixed a compiler bug that would sometimes prevent indices in variables from properly being shown, in error messages regarding invalid variable references.
  • Fixed a compiler bug wherein if you used variables like global.player[1].number[2] without declaring the top-level or nested variables, and without ever using the top-level variable on its own, the compiler would only implicitly generate a variable declaration for the nested variable, and not the top-level variable. (This would not have affected a typical script, as in general you would not read numbers from a top-level variable without first setting the top-level variable to actually refer to something.)
  • The player.unk09 property has been renamed to player.money.
  • The hud_player variable can now be referred to by a more accurate name: local_player.
  • The hud_player_team variable can now be referred to by a more accurate name: local_team.
  • The game.show_message_to function can now be referred to by the MegaloEdit name, hud_post_message.
  • The object.place_at_me function can now be referred to by the MegaloEdit name, create_object.
  • The object.set_shape function can now be referred to by the MegaloEdit name, set_boundary.
  • The object.set_spawn_location_permissions function can now be referred to by the MegaloEdit name, set_respawn_filter.
  • The object.set_spawn_location_fireteams function can now be referred to by the MegaloEdit name, set_fireteam_respawn_filter.
  • The player.set_round_card_title function can now be referred to by a more accurate name: set_objective_text.
  • The player.set_round_card_text function can now be referred to by a more accurate name: set_objective_allegiance_name.
  • The player.set_round_card_icon function can now be referred to by the name: set_objective_allegiance_icon.
  • The debug_break function can now be referred to by the MegaloEdit name, break_into_debugger.
  • The debug_set_tracing_enabled function can now be referred to by the MegaloEdit name, debugging_enable_tracing.
  • The insert_theater_film_marker function can now be referred to by the MegaloEdit name, saved_film_insert_marker.
  • The object.get_carrier, player.get_armor_ability, player.get_vehicle, and player.get_weapon functions are now compiled slightly more efficiently: a failsafe that was previously thought to be relevant is in fact unnecessary, so the compiler no longer wastes bytes on it. These functions had alternate names that could be used to bypass the failsafe (generally <type>.try_<name> e.g. object.try_get_carrier); as these names are no longer necessary, they are now deprecated. The failsafe has been confirmed necessary for player.get_killer, player.get_death_damage_type, and player.get_death_damage_mod, and remains in effect for those functions; their "try" variants are not deprecated.
  • Documented the fact that HUD widgets' text only displays up to 116 characters. (Count the null terminator, and we get a buffer length of 117. Cute.)
  • Documented an obscure trick with object.place_between_me_and that can be used to force a very specific angle of rotation on spawned objects.
  • Documented an obscure trick with object.face_toward that can be used to adjust an object's yaw-rotation by specific angle ranges. The documentation also includes a JavaScript-based calculator that will tell you which values correspond to any desired yaw angle adjustment.
  • Documentation is now more accurate regarding how object.place_at_me handles object rotations and position offsets.
  • Documented some of the internals for how Megalo itself works, and how ReachVariantTool handles it.
  • Fixed broken links in some documentation pages.

v2.1.11 Mirror

03 Mar 00:55
Compare
Choose a tag to compare

Version 2.1.11, mirrored here for those unable to obtain it from NexusMods.

v2.1.10 Mirror

16 Nov 22:32
Compare
Choose a tag to compare

Version 2.1.10, mirrored here for those unable to obtain it from NexusMods.

v2.1.9 Mirror

18 Sep 18:33
Compare
Choose a tag to compare

Version 2.1.9, mirrored here for those unable to obtain it from NexusMods.

v2.1.8.1 Mirror

06 Sep 17:38
Compare
Choose a tag to compare

Minor fixes to the syntax highlighter.