The instance variable idea sounds like it would work.
If all the cards were just one object type and had different animation frames and variable values and all the cards were created. then just picking 8 from that and in turn four from that would be fairly easy with events.
Some like having different cards be separate object types. In which case putting all those types in a family would be an option. But again to make it easy to pick you’d want all the instances created beforehand.
Some like the idea of not having to have a card instance for every card in the deck, so instead you could instead create/destroy the cards on the fly. Simple to do but it will throw a slight inconvenience with picking events. Namely there has to be a so called delay after creating instances so they can be picked normally.
The closest point is at the next “top level event” but I’m not sure anyone else has utilized that.
The next closest would be at the end of the frame. Using a wait 0 action defers to the end of the frame.
Others have tried the next frame or waiting some longer period of time.
Anyways, I’ve found it cleaner to avoid that altogether and just create the instances beforehand or at the start of the layout. With the cards being a single object type you can just change one card into another by changing its properties instead of creating/destroying.
Personally I’d be inclined to do the first idea. One object type for all cards. Create each card on the layout and customize each of their animation frames and variables. Some of the variables could be deck=0 and hand=0. You’d just set any to 1 that you’d want to hold. It’s easy to pick them by variable in events. You could just move the other instances off screen.
The second iteration could be to do the same thing but instead of creating all the cards I’d just create all the ones in your deck. Then I’d have an array or json with all the specs or each possible card and then change the created instances from that.