The mission-set-nebula sexp never initialized the nebula range, which is usually done in the background editor. This PR allows the range to be specified, and sets it to 3000 (the same default as in the background editor) if not specified.
Fixes#3619.
The old XSTR parsing code was a bit of a mess and did not even properly enforce its format. These new routines enforce the actual XSTR format and warn when it is malformed, which is helpful for catching table errors as early as possible. This fixes#3627 and also catches mismatched quotes and other common XSTR errors. No more wondering why comments are being mysteriously parsed instead of ignored!
When an empty string is encountered in the weapon list, it's valid, but the -1 should actually be stored, not skipped.
This bug was preventing ship weapons from being explicitly set to None.
Certain characters (especially the semicolon) couldn't be used in SEXP help. By using the same character replacement as in briefings and messages, now they can.
* refactor hud escort list to be less crazy
- don't keep rebuilding list
- add and remove ships more efficiently
- better handling of player ships in multi (fixes#1674)
* fix sorting issues
- incomplete priority sort
- reversed alpha sort
* fix additional sorting issue
* improve safety check in list sort function
* add safety checks to hud_add_ship_to_escort()
this wasn't meant to be used outside of the module so
it was not really safe to use with sexps previously
* remove entries properly in hud_add_remove_ship_escort()
Checks whether the game is running in the specified language. Since the fiction viewer doesn't use XSTR-style localization, this SEXP can be used to display different stages for different languages.
* wip
* basics are working
* turret case is handled
* better fighter beam handling
* missing commit?
* handle missile spawn
* clean up, commenting and ssb handling
* random in sphere and per burst rot counts for "share random" flag
* clean up, clarity and comments
* accidental whitespace changes
* bugfix
* NULL -> nullptr
* more efficiency/clarity
* review tweaks and bugfixes
Here's a bug that's been around ever since version 3.6. If the subsystem names were not essentially the same, the function wouldn't do the expected string comparison.
The script-eval SEXP evaluates all arguments as individual script commands, which is not ideal because most FREDders expect the arguments to be concatenated. Since the script-eval-block SEXP handles its arguments this way, it makes sense to hide the script-eval SEXP in FRED to prevent confusion.
Commit 6c2ebab01c (#3439) added a `max_line_length` argument to `split_str()`, but one call had the extra argument added in the wrong spot, and so a previously-pointless-but-harmless `ignored_char` of 0 became a `max_line_length` of 0, resulting (ultimately) in an exception in the unicode code when the iterator tried to decrement at the beginning of a ship's description. This gets rid of the argument entirely, rather than reordering them, because ignoring null characters doesn't really do anything anyway.
I've also added `Assertion`s to check `max_line_length` that should prevent this specific problem from occurring again in the future.
* Validate user-provided values passed to Random::next()
* return low value on invalid range
* call LuaError() instead of Warning() in rand32() script function