I also experienced this behaviour. It seems like Plus! Live executes the script files in an order like this:
- Load the script files in the main script directory (Scripts\Script Name\)
- Execute the global codes while loading the files.
- Load the script files as requested by MsgPlus.LoadScriptFile().
So in fact, when you do a LoadScriptFile() call while it's still loading other script files, Plus! simply adds the file to it's "to-do" list and immediately returns. When all the script files in the main directory are already loaded and the call comes from an event, Plus! will load it immediately.
The problem is that this stops me from doing clean-up actions before the script is initialized. For example, I want to make sure that old script files which I used in Countdown Live v1 are removed before the script tries to load them. Because I can't, I have to remove them after they were loaded, which stops the script from working because of overlapping functions, and thus I have to ask the user to restart the script.
Sounds like a Plus! bug or limitation to me, yes!