Hi Everade!
I must have overlooked this thread previously since it seemed like you already had plenty of help, but I guess it was never resolved to satisfaction. I'm trying to get caught up here, let me know if I missed/misunderstood something.
Goal - You need objects to interact with solids conditionally in certain situations (different "floors").
Additional requirements - Within the same layout, due to multiplayer
Problem - Solids can only be set globally, also you cannot enable and disable them as needed in a multiplayer environmnent, as different players may be on different floors at any given time.
Attempted Solution - Custom solids/collision behavior, with conditionals based on y axis z order (not ideal, as isometric view causes much complication, or layers, which gives you pretty good control but you have to have a good method to switch layers.
New problem - Custom solids are hard to do correctly. Collisions and blocking movement not satisfactory, especially with high velocity/time discrepancy introduced in multiplayer, resulting in bouncing.
So assuming you're OK up to the layer system for logic defining who should be able to collide with what at any given time, the next step would be to set up a good collision system. The first thing that comes to mind for me is using SAT to prevent anything from overlapping to begin with, rather than colliding/overlapping first and then pushing your objects away which causes undesirable bouncing.
Ref: https://gamedevelopment.tutsplus.com/tu ... amedev-169
Example: r0j0-039-s-experiments_t91829 (first one)
This would need to be applied on both the host side and the peer side. If applied to both consistently, neither host nor peer should see any discrepancies outside of normal lag/desync issues.
Basically, it comes full circle with your request to have the solid behavior allow for conditionals. If the official behavior doesn't support it, we'll need to build our own. While most of the other behaviors are pretty simple to recreate with events, solids have a lot more to take into consideration due to their interaction with a variety of different objects and behaviors. I'd be interested to see the logic behind how the official one is put together.
Sorry I don't have a working example, this is a bit complicated and beyond my ability to put together quickly.