Two questions, is the random(4)+1 more effiecent than random(5) because it stops me from getting one number that's unused (or maybe loops around causing me to have more of one frame)?
Actually I forgot about that. You used random(5), which will return 0, 1, 2, 3 or 4. But you have frames from 1-4. So random(4) returns 0, 1, 2, 3 obviously and +1 it's just what you need.
And on the vertical movement, what's the purpose of making sure red isn't already moving. Seems to function the same with and with since it will always handle the horizontal movement first.
EDIT: I found I can break it if i switch while one's falling, i can cause them to overlap and stick together. I gotta fix that.
Actually that's what the inverted Is moving condition is meant for. So you can't break it that way.
Well if you added it to the switching conditions too that is.
EDIT: I just tried it briefly and realized that alone won't do. You'll have to change your switching events further. Of course it also depends on what kind of gameplay mechanics you plan for the game. Like switching possible all the time or just when no block is falling and stuff like that.