For very intricate and custom combine operations like this, I feel it is easiest to tackle them with the ProcessFlow tools (requires v7.7 or later). The parts of this scenario that are tricky is making sure the combiner pulls the right things, in the right order and the right quantity; something the standard combiner object has a hard time, which (without some heavy code writing) really wants to pull a fixed number of things from wherever it can as soon as they become available. ProcessFlow in conjunction with the new List feature gives us a little more control over this sort of thing. In my attached model I've tried to replicate your scenario, give it a look and let me know in the comments if this is what you had in mind.
In my attached model, I have objects that do pretty standard behaviors (Queues, Sources, etc) but my Custom Combiner object isn't a Combiner at all; it's a Shape object that I will cause to be the location for all my combining operations. It's logic will actually be controlled by a series of Process Flow activities.
Queue4 is adding the flowitems it receives to a List and organizes them by itemtype (Partitions).
I start by creating a Process Flow Token when my Pallet source creates a pallet. The Token gives me a logical entity that I can send through Process Flow activities to control the Combining.
I create a label on the token that lets me know if it should be pulling types 1, 2, or 3. Once the pallet is in my "Combiner" I do a Pull from list where I am looking for the 'Request Number' of flowitems based on what type I'm looking for in the sequence.
If my sequence label says to pull type 1, my Require Number will be 2. The 'Require Number' here is a minimum amount the Pull will accept if the 'Reqjuest Number' can't be met. I've also told the Pull to use a Maximum Wait Time, where I've put in that there is No Waiting time (zero time), which means if the needed components for the Pull are not present in the Queue then give up on trying to Pull.
Giving up on the Pull is my signal that we must need to move on to the next type int he sequence, so if I can't pull rather than going to the processor for a process time, increment my sequence label and try to pull again using the new type. Basically it does that over and over until it's pulled everything out of the queue.
After each pull you will notice I move the pallet out to the processor and send it back to the combiner for the next round of flowitems for each sequence. This lets me make sure the Combiner is still assigned to the pallet until it's totally packed.