The `SCP_string_lcase_equal_to()()` and `SCP_string_lcase_less_than()()` functors are rather unwieldy to use in non-functor situations, so this adds conventional function equivalents.
Related to #5267, and again concerned with the original check for event delay:
```
if ( (fix) Mission_events[i].timestamp + delay >= Missiontime )
return SEXP_FALSE;
```
For events that were never evaluated at all, their timestamp remained 0. Thus the function did not return and the status of the event (which by definition was incomplete) was always checked.
After the timestamp refactoring, this comparison always returned SEXP_FALSE for these events. The correct behavior is to bypass invalid timestamps so that the status of the event is always checked.
This fixes the behavior of `is-event-false-delay` in debriefings.
In retail, number parsing picked up immediately at the character after the number parsed, so parsing `0.50` as an int would yield 0, and then the next available characters would be `.50`. Even though parsing has been tightened up and made stricter, we can still "fail gracefully" by simulating the old behavior. And when failing gracefully, the message can be a warning.
Since `rand_sexp` also writes text into the sexp node for the seed value, its cache should be cleared too. And since this is a pretty common operation, wrap it in a `clear_cache` function.
Follow-up to #5381.
The `rand` SEXP stores the result of its first call in the "low" node. Prior to PR #2402, this worked fine, but after that, the value is cached when first evaluated, meaning that subsequent calls to the `rand` SEXP will always return the lowest value in the range, not whatever number was rolled the first time.
This commit makes it so that writing the rolled value to the node's `text` attribute is immediately followed by deleting the no-longer cached value, so that the SEXP continues to work as intended.
* Fix max Z speed when using ETS and engine damage tracking
Follow up for #5137 and #5292. This engine strength check thus needs to be added to all instances where `max_vel.xyz.z` is updated, so a function was created and added in respective locations. Fixes#5367.
* cleanup and adding validity assertations
* cleanup outdated comments
* might as well make the cleanup look nice
* update to account for more edge cases
* cleanup
When parsing a list of numbers, such as in the $uvec or $fvec of models, a bug was reported where whitespace before the comma caused the number parsing to fail. This change checks for a comma after whitespace instead of checking for a comma as the very next character.
Originally the check for event delay was this:
```
if ( (fix) Mission_events[i].timestamp + delay >= Missiontime )
return SEXP_FALSE;
```
This returns false even when the mission time is equal to the timestamp. Therefore the timestamp check needs to use >, not >=.
Thanks to Durandal and ShivanSpS for helping to track this down.
* fixup error checking in regards to sexps using dynamic parameters
* anal retentive
* add more nonsense to make other nonsense work
* check these better
* dammit github
This reverts commit 542707c1c2.
* do this again but not in GitHub
* more nonsense to handle nonsense
* Revert "more nonsense to handle nonsense"
This reverts commit 6bc8b6e775.
* this is the song that never ends
* Add ability for a Lua sexp parameter to require a 'parent' parameter
* Add dockpoint as a return type
* variable conflicts
* var name
* qtfred
* address feedback