thanks lennaert dont know why i didn't think of using x based seconds to do that computation. the exact method you posted certainly helped, though I had to change it a bit for my use case. I ended up going with
+ System: Every 0.1 seconds
+ Zorder: Is on-screen
----+ System: Pick Zorder where Zorder.?Y > PlayerController.?Y
----+ System: For each Zorder order by Zorder.?Y ascending
-----> Zorder: Move in front PlayerAnim
----+ System: Else
----+ System: Pick Zorder where Zorder.?Y < PlayerController.?Y
----+ System: For each Zorder order by Zorder.?Y ascending
-----> Zorder: Move behind PlayerAnim
to achieve my desired effect:
I cant just move everything to the top layer, as it messes up when the player would walk in front of the objects, but your advice on the 0.1 seconds timer as well as using on-screen instead of is visible, and also along with using a for each ordered bought CPU usage down to a much better 2%. Im sure that it will scale much better on things like overworld maps as well.
LIKE THIS...
BUT HOW SOLVE THIS...
CODE: