Saludos a Todos en la Comunidad :

versus" border="0
Necesito ayuda en esto, miren normalmente en el modo Arcade de los juegos de pelea como street fighter, cada vez que iniciabas desde el primer combate hasta el penultimo( ya que el último siempre es lugar para el jefe o más poderoso del juego ), habia una pantalla de versus para mostrar contra quien ibas y la cara del personaje que salia era aleatoria, cada vez que iniciaba el modo Arcade. Yo quiero hacer algo igual pero, cada vez que termina un combate se debe volver a ese room, pienso yo, nose que me diran, que para hacerlo necesitaria crear un archivo INI y utilizar Ds_List, como para almacenar en dos listas distintas las caras que ya han salido vs las caras que no han salido y que pueden ser seleccionadas por el codigo, yo estoy utilizando una sola "room" para esa pantalla. Coloco un objeto con el sprite de las caras de los personajes en un solo sprite y hago esto:   

Objeto de las caras
Evento Create:
image_speed = 0;
image_index = choose(1,2,3,4,5,6,7,8,9,10) // subimagenes de la 1 hacia delante , la # 0 es una subimagen en blanco
image_xscale = -1 // pero asi obviamente se van a repetir al volver al room Versus
   

No se si me estoy complicando
Y estos dos conjuntos de codigos que colo aqui debajo es algo que pienso podria utilizar como referencia es para guardar en un array , funciona para cada vez que el enemigo pierde se desbloque la siguiente pelea, talvez cambiando algunas cosas podria funcionar para este tema que eh posteado, pero este solo funciona para guardar un solo valor

Evento Create
Objeto en Blanco:
//Este array almacenará el objeto correspondiente a cada evento
capitulo[0]  = obj_event1;
capitulo[1]  = obj_event2;
capitulo[2]  = obj_event3;
capitulo[3]  = obj_event4;
capitulo[4]  = obj_event5;
capitulo[5]  = obj_event6;
capitulo[6]  = obj_event7;
capitulo[7]  = obj_event8;
capitulo[8]  = obj_event9;
capitulo[9]  = obj_event10;
capitulo[10] = obj_event11;

//Así hasta el evento 11

ini_open("capitulos.ini");
ultimo = ini_read_real("capitulos", "ultimo", 1); //Suponiendo que al inicio debe estar al menos el primer capítulo desbloqueado.
ini_close();

for(var i = ultimo; i < 11; i++)
{
    with(capitulo[i])
    {
        instance_destroy();
    }
}


y para el enemigo cuando pierde coloco esto
if (PSEV < 1)   /// variable de vida
{  ini_open("capitulos.ini");
   ini_write_real("capitulos", "ultimo", 2);
   ini_close();
   exit;
}

Para organizar los combates de forma aleatoria y sin que se repitan, lo mejor es usando una lista y luego desordenarla, y después ir borrando los valores que se hayan usado. Mira este post:
https://www.comunidadgm.org/preguntas-y-respuestas/duda-code-random/

Eso es lo que entendí ¿era eso?

Hola getnoff,si va por hay a lo que estoy pidiendo entiendo mas o menos el código, cuando se utiliza random creo que solo funciona estando dentro del mismo room, no se mucho de GML,  ¿Habría que hacer el objeto controlador en este caso "Persistente" ?

Para evitar el problema de la persistencia, puedes usar variables globales, estas mantienen su valor sin importar si cambias de room o destruyes el objeto donde se crea, se declara así:
global.nombrevariable = valor;

Nunca he trabajado con rooms persistentes, pero según he leído conviene evitar usarlos porque causan efectos secundarios negativos. Usando las variables globales y las listas no debería hacer falta usar archivos ini.