¡Hola!

Os explico; estoy tratando de hacer un juego de alquimia como littlealchemy.com. He creado, para empezar, un objeto runa_agua y otro runa_fuego, que heredan de otro objeto runa. Este último es el que lleva toda la lógica de programación. Ahora, necesito que al unir las instancias de obj_runa_agua y obj_runa_fuego, creen una tercera instancia del objeto obj_runa_vapor.

Para ello he pensado en ponerle un id a cada obj de cada elemento. He probado a poner en el evento Create de fuego, agua y vapor un id (había pensado en hacerlo o con un id Striing o con un numérico y poniendome una chuletita del id de cada elemento, pero creo que esto es secundario), y que cuando colisionen fuego y agua, compruebe en una lista de tooooodos los elementos y combinaciones posibles (podría ser un array, no lo tengo pensado aun) para saber que instancia crear.

Pero ahora viene el problema; poniendo en create una id pues no funciona.

También aprovecho para preguntar que me expliquéis (si tenéis tiempo :p) como funciona todo esto de las instancias y obejtos, porque desde que estudio gml todo esto se me ha resistido. Comprendo la diferencia entre una y otra, pero no sé como diferenciar una instancia de un obj_loquesea de otra instancia del mismo objeto. No sé cómo poner mis propias id para saber que instancia es cual. No sé cómo hacer que una instancia tenga un comportamiento diferente que el resto de instancias del mismo objeto... En definitiva, no sé trabajar con instancias.

¡Esto es todo! Espero que me podáis ayudar. :''D ¡Gracias de antemano!
Jaja no sé firmar ññ

Cada elemento y compuesto podría representarse con un número entero. Para no tener que definirlo manualmente y no tener que recordarlo se podría usar un enum de esta forma:
[gml]
enum materia
{
    aire,
    tierra,
    fuego,
    agua,
    polvo,
    lodo,
    lava,
    vapor
}
[/gml]
Cada combinación se podría indicar en una matriz, así:
[gml]
combinacion[ materia.fuego, materia.agua ] = materia.vapor;
combinacion[ materia.agua, materia.fuego ] = materia.vapor;
[/gml]
Como no todas las combinaciones generan otro compuesto, habría espacios vacíos en la tabla, causando un desperdicio de memoria. Debe existir un método de almacenamiento más eficiente, pero por ahora no se me ocurre.

Para evitar errores, sería conveniente inicializar la tabla con un valor que indique que la combinación no está definida, por ejemplo -1
[gml]
for( i=materia.aire; i<=materia.vapor; i++ )
for( j=materia.aire; j<=materia.vapor; j++ )
{
    combinacion[i,j] = -1;
}
[/gml]

Usando el sistema anterior, cada elemento o compuesto sería una instancia de un mismo objeto pero con diferente image_index.