Releases: DavidJCobb/ReachVariantEditor
Releases · DavidJCobb/ReachVariantEditor
v2.2.5 Mirror
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. Theplayer.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
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 forordnance
. - If your game variant has n many scripted player traits, then the highest valid index into
script_traits
is n - 1. If you mistakenly accessscript_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
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 thefirefight_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 toinv_spire_vo_covenant_p4_start
. object.apply_shape_color_from_player_member
should now acceptnone
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
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
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
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 firstplayer.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 (likewidget.set_text
) will treat as "persistent." - The
hud_target_player_team
built-in variable has been renamed tohud_target_team
. - The
hud_target_object_team
andunk_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 usinghud_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
, orno_player
would generate variable declarations forglobal.object[0]
,global.team[0]
, orglobal.player[0]
, even if you never used those variables. Theoretically, references toteam[0]
andplayer[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 toplayer.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
, andplayer.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 forplayer.get_killer
,player.get_death_damage_type
, andplayer.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
Version 2.1.11, mirrored here for those unable to obtain it from NexusMods.
v2.1.10 Mirror
Version 2.1.10, mirrored here for those unable to obtain it from NexusMods.
v2.1.9 Mirror
Version 2.1.9, mirrored here for those unable to obtain it from NexusMods.
v2.1.8.1 Mirror
Minor fixes to the syntax highlighter.