Script_RunImmediatelyUntilEffect runs a script until either a specified
effect may occur or it reaches an end.
All existing script commands and natives, and some specials, call
Script_RequestEffects which allows us to analyze them.
Any downstream script commands/natives/specials will be statically known
not to call Script_RequestEffects and treated as if they have all
effects. Manually tagging them with requests_effects=1 and calling
Script_RequestEffects will make them analyzable.
Using these, we're able to execute scripts until they either exit with
no effect, or would possibly have an effect. This allows us to:
1. Not run on frame map scripts or triggers if they would have no
effect.
2. Immediately run triggers if they only affect flags/vars. This removes
the lag frames when biking into the Cycling Road, for example.
3. Migrate on load/on transition/on resume/on return to field/on dive
warp scripts onto the global script context if they would block
(approximated via SCREFF_HARDWARE).
4. Support arbitrary control flow in trainer scripts. The trainer does
not see the player if the script has no effect, and the trainer will
use whichever trainerbattle command is branched to.
5. Support arbitrary scripts in trainer scripts. cant_see and
cant_see_if_* commands have been introduced so that scripts are able
to do something when the player interacts with the trainer even if
that trainer wouldn't see them.
* Filename in list (no proper sorting yet)
* Line number and message in error list + removed sorting
* Style adjustment
* Added missing file/line number to "expected N passes/successes"
* Fixed Known Failing Passing test list
* Separated test list from totals
* Assumption fails list
* Better names
* Filename for KNOWN_FAILINGs passing
* Moved total back to the bottom
* Spaces correction
* Fixed test list count
* Source file for Alloc fails on tests
* Moved sourceLine from BattleTest to Test struct
* Fixed assumptions failed "and more" counter
* Fixed ASSUMPTION block not printing their line numbers
* Fixed when stopLine is printed
* Renamed stopLine to failedAssumptionsBlockLine