Hola. Trate de resolverlo mediante diferentes códigos y pasando horas probando diferentes maneras pero no pude... entonces vengo aqui  como siempre.

Estoy haciendo un juego en el cual tiene varios niveles (es de buscar objetos, controlados por un global.level), y todos estan desbloqueados. En el room del nivel tiene para pasar de nivel al que sigue, o ir un nivel para atrás. Lo que quiero que haga al cambiar de nivel es que vaya a la próxima más cercana y que el nivel no se haya completado (no se hayan encontrado los 5 objetos). Para eso uso lo siguiente:

objeto_flecha_siguiente
evento left released:

alarm[0]= 1


alarm[0]

global.level = global.level+1
if global.level = 21 global.level = 1 // por si se pasa del nivel 20
alarm[1] = 1


alarm[1]

if global.grid[# global.level-1, 5 ] = 5 // <-- Esto son los objetos, si hay 5 encontrados el nivel esta completo.
{
alarm[0] = 1
}
else
{
room_restart(); // <-- Room restart porque todos los niveles son en el mismo room. Los controla el global.level
}


Si tengo el nivel 2 completo y estoy en el 1, al tocar la flecha voy al 3, anda bien. El problema es que pasa un máximo de 6 niveles, y despues como que no andan más las alarmas o no se que pasa... Por ejemplo si tengo del nivel 2 al 10 completados y estoy en el 1, al tocar la flecha me va al 6 (en el cual obviamente entra y te dice ¡Ganaste!)

Alguien sabe por qué pasa esto? O cual sería otra solución?