1) The ship-vanish SEXP (and script function) was already multiplayer-ready
2) The is-ship-visible SEXP was enhanced to add a second argument, which defaults to the player's ship in single-player mode
When various SEXP functions related to ammo were consolidated back in June (in commit 54409ec928), certain safety catches meant to avoid having too much ammo or the wrong ammo capacity after changing weapons were lost. This commit adds code that should be functionally equivalent.
While skimming the differencs in jg18's branch of PR #3253...
https://github.com/jg18/fs2open.github.com/tree/feature/sexp-containers-revised
...I noticed a TODO that is almost certainly a genuine bugfix. As such, it deserves its own PR. The line in question was last modified in 2012 by karajorma, and the bugfix should test for the special-arg in the entire actions tree rather than just the first action.
1) The ship-vanish SEXP (and script function) was already multiplayer-ready
2) The is-ship-visible SEXP was enhanced to add a second argument, which defaults to the player's ship in single-player mode
This is a follow-up to #2687. The final implementation of evaluateNumericSEXP different from the testing implementation in a small but crucial way that prevented it from actually working. Since it used `eval_num`, it didn't evaluate the specified SEXP node but rather the CAR (first element) of the node list. This fixes that by putting the node in a temporary SEXP list so that `eval_num` will look in the right place.
Implements send-message-chain as described in issue #3185. Also fixes the default argument for message priority, and mirrors the default argument fix to qtFRED.
* Can't simply use the previous fade_out color as the default, because of an edge-case with legacy usage. The refactor would disallow setting the fadout to black.
This is a follow-up to PR #2942. Given that the short-circuiting is now explicitly skipped for node trees containing the special argument, it should no longer be necessary to flush the conditional branch of the sexp tree. (The .cache field is already skipped for special-arg nodes.)
The sexp tree is still explicitly flushed for `every-time` and `every-time-argument`.
It takes a number as a maximum number of arguments that can be evaluated in a single call, but otherwise behaves very similarly to `any-of`; alternatively, if the number is 1, it's like an `in-sequence` that also skips arguments that don't satisfy the condition instead of just invalid ones.
* Fix underline length calculation in message scrollback
* Use SCP_string for message source (which allows ships with long display names to work without crashing) and message text
* Upgrade assorted functions to work with SCP_string