Hello, Ryshad

Ok, let's go .. I'll give a few comments on your suggestions and then give you an example.
a) include a flag in the bay to show that it is in another step
No, you shouldn't. Because the Bay class shouldn't be aware of what's happening outside of it.
b) have the step check with the sequence to see if any steps contain it
Also sounds a bit weird .. if rephrase - it would be "the element of an collection should be aware of other elements in collection "
c) check in the main form and pass a colour to the draw method
That's seems the right abstraction level for that design. The Form contains the collection and can be aware of what stored in it. But, probably not passing a color, but calling the right method or calling method with parameters.
Ok, for the first sight that all may seem kinda confusing, but here's example:
Imho, the one of the best methods of explanation - is use of metaphors...
Let's imagine that class is a
closed box. If you're inside that box - you can't see what is happening outside
(see your a suggestion).
But if we outside the box - we can see some of it characteristics (the methods or data, that you opened for public viewing aka open interface of the class).
Now let's put a few boxes in a row .. we have now a collection of boxes. Now you think, could we see the other boxes from inside of one of them? NO
(see your b suggestion).
Now let's imagine, that our boxes are placed on some surface. We can see whole collection of the boxes also as one single element of that collection (box). And here's your form, containing a collection
(see your c suggestion).
Now few words about the way your form interact with elements in collection:
You have a surface, with boxes on it .. Now, could the surface know, what color of box should have if it's in the given state? Or rather SHOULD it know that?
If you decided to use OO, then you decided to use some abstraction .. You have Bays, which can be in a few states etc. etc. So you can go further with that abstraction and depending on the Bay state - call methods e.g.
draw() (if we have it) or
drawStub() (if we haven't it yet) .. (everything this said after assuming, that the
On property is publicity visible).
The
drawStub() may be static, for the case if you haven't right instance of Bay class right now (but will have in future), but should display the Bay for the further steps.
Hope this will help you