There's apparently a SOL list, a New Object list, and an Instance List.
When you create an object, the SOL is set to that new object. It also gets added to the New Object List. However the Instance List (which the picking condition uses) will not have the new objects in them until the next Top Level event.
The function apparently is not a top-level event, so the new objects don't get added to the Instance list.
The problem we're facing is that we need a way to pick all the objects, including the objects in the New objects List. Apparently there is no way to do this currently, and I'm hoping Ashley can implement a way to do this.
It seems silly that creating an object will set the SOL to that new object, allowing you to interact with it instantly, however you can't reselect them until next Top-Level event.
Because we can't reselect everything, It causes issues in the flow of the program and how things get processed- we have to take into account having to wait until another top-level event, which makes things more complicated than they ought to be. And due to this, there's potential to make more errors because things don't appear as they seem.
edit: also- newt, that doesn't solve all situations. Referencing a global variable will still cause a delay.