Hey ai4ns,
It sounds like you want to show a random layout as if drawing it from a deck of shuffled cards, and allowing the deck to run out over successive draws.
We can use the Array object to get this effect. At the start of the game, we can fill it with layout names (making our deck), and then pull the layout names (cards) out of it at random, and discard them as we jump to that layout.
We want a simple 1-dimensional array. The Array object in Construct 2 will work just fine, but be aware that it's a 3-dimensional array, a cuboid with X-width, Y-height, and Z-depth. So we'll just need to be careful.
To get a 1-dimensional array, we will only be dealing with the X-width axis, so we will set the Y-height and Z-depth both to "1" and forget about them.
Add an array object to the layout.
On start of layout, set its (x,y,z) size to (0,1,1).
(Just as a brief example, at this point if we were to add 5 cells into the X axis, the array size would then be (5,1,1), a 1 by 1 snake that is 5 cells long. Written out, [ cell-0 , cell-1 , cell-2 , cell-3 , cell-4 ].)
Okay, so we have a (0,1,1) array.
Still on start of layout, we run a loop to create 1 array entry for each layout you want to go to (3 to 14), and add (push) them into the array. Rather than filling the array with layout numbers (since I'm not sure you can jump to a layout by number), lets use the layout names. For this example I'll assume that layouts 3 to 14 are named "p1" to "p12". ("p" for page).
We get:
[ p1 , p2 , p3 , p4 , p5 , p6 , p7 , p8 , p9 , p10 , p11 , p12 ]
Now when you want to choose a new layout, we pick one of those cells at random and save the cell number we picked in a custom local variable "cellIndex", then store the number we find in that cell in another local variable "cellValue". Finally, we remove the cell at "cellIndex" from the array. We can then jump to the layout "cellValue".
So the whole event will look like this:
Event: <We need to jump to a new layout>
Action: [System]: Set local variable "cellIndex" to: floor( random( Array.Width ) )
Action: [System]: Set local variable "cellValue" to: Array.At( cellIndex )
Action: [Array]: Delete index cellIndex from X axis.
Action: [System]: Go to layout (by name) cellValue.
So as an example of how this would work:
Starting with
[ p1 , p2 , p3 , p4 , p5 , p6 , p7 , p8 , p9 , p10 , p11 , p12 ]
We pull out a random cell "p3" and go to that layout. And the array is now missing that cell.
[ p1 , p2 , p4 , p5 , p6 , p7 , p8 , p9 , p10 , p11 , p12 ]
Now if we pull out another random cell "p11", we get
[ p1 , p2 , p4 , p5 , p6 , p7 , p8 , p9 , p10 , p12 ]
etc... Eventually we have used up all the cells.
[]
Sorry the explanation is verbal rather than a capx.
Anyway, I hope that helps.