Ir al contenido

El orden de ejecución

Cuando un causante dispara, la pila pasa siempre por las mismas cuatro fases, en este orden:

1. SELECTORES ¿sobre qué furnis y qué usuarios va esto?
2. COMPLEMENTOS ¿cambian las reglas del resto de la pila?
3. CONDICIONES ¿se cumple lo que pido?
4. EFECTOS hacer las cosas

Casi todo lo que parece un fallo del Wired se explica sabiendo este orden.

Lo primero que ocurre es resolver el conjunto: qué furnis y qué usuarios entran en juego. Los selectores se evalúan antes que nada, así que trabajan sobre el estado de la sala tal como estaba en el momento del disparo, antes de que ningún efecto haya tocado nada.

Esto tiene una consecuencia práctica importante: si tu pila mueve furnis y a la vez los selecciona, el selector ve las posiciones de antes del movimiento.

Con el conjunto ya resuelto, se aplican los complementos. Aquí es donde se decide si las condiciones van a evaluarse con Y o con O, si esta ejecución está dentro del límite permitido, en qué orden se van a recorrer los objetivos, y qué texto real va a sustituir a cada identificador.

Ahora se evalúan las condiciones. Por defecto se exigen todas a la vez: basta con que una falle para que el bloque entero falle.

Si añades a la pila el complemento de evaluación O, cambia la regla y basta con que se cumpla una.

El resultado de esta fase solo tiene dos salidas:

  • Pasan → se ejecutan los efectos normales.
  • Fallan → se ejecutan los efectos negativos, si los hay. Si no los hay, la pila termina sin hacer nada.

Los efectos no corren en el orden en que los apilaste. El servidor los reparte en cinco escalones y los ejecuta de arriba abajo:

Escalón Qué va aquí
1.º Dar variable
2.º Cambiar valor de variable
3.º Eliminar variable
4.º Todo lo demás: mover, hablar, teletransportar, puntuar…
5.º Enviar Señal y Ejecuta Pilas

Los tres primeros no son un capricho: hacen que el resto de la pila vea las variables ya calculadas. Por eso un Mensaje puesto en la misma pila enseña el valor final y no el que había al empezar. Entre el tercero y el cuarto hay además un paso interno en el que los complementos de texto capturan su valor, que es lo que permite que un identificador muestre en su propia pila el número recién calculado.

El quinto es el que más consecuencias tiene. Que las señales y las llamadas salgan al final garantiza que la pila que las recibe ve el estado ya modificado, y no a medias. Si mueves un furni y envías una señal en la misma pila, la pila remota verá el furni ya movido.

Dentro del cuarto escalón el orden se sortea en cada ejecución. No está solo “no garantizado”: es aleatorio de verdad, y cambia entre una vuelta y la siguiente. Si necesitas que dos cosas ocurran en un orden concreto tienes dos salidas: el complemento Ejecutar en Orden, que los ordena por la altura a la que coloques los furnis, o partir la pila y encadenarla con una señal.

Un mismo evento puede disparar varias pilas: tres baldosas distintas con causantes de pisar, o varias pilas escuchando la misma antena.

Cuando eso pasa, el sistema evalúa todas las condiciones antes de ejecutar ningún efecto. Es decir, todas las pilas miran el mismo estado de la sala, el de antes de que ninguna hubiera actuado.

Esto evita un problema clásico: si la pila A apaga una luz y la pila B tenía la condición “la luz está encendida”, B no se queda fuera solo por haberse evaluado un instante después. Las dos ven la luz encendida y las dos actúan.

Es un comportamiento deliberado. Si lo que quieres es justo lo contrario –que solo una de ellas actúe– tienes que encadenarlas con señales en lugar de dispararlas en paralelo.