Cosas que van a molar de mi juego:
- Si el personaje recibe un golpe, entra en "modo sigilo" (se vuelve invisible y los enemigos que te atacan deliberadamente no pueden localizarte, aunque aún podrían toparse contigo si simplemente pasan por tu posición)
- Si te subes al menos 1 nivel de "Rogue", puedes entrar en "modo sigilo" pulsando ↓+L
Por otro lado, si al golpearte el pequeño retroceso del golpe te empuja hacia un risco, en principio no te va a tirar a menos que ya estuvieses muy al borde, pero si te acerca a él tanto como para que el PJ se ponga a "hacer equilibrios para no caerse", no hay "modo sigilo".
Por supuesto, en cuanto te mueves o realizas cualquier otra acción diferente a agacharse (o si te caes de una plataforma de esas que aparecen y desaparecen), adiós sigilo.
Un detalle interesante de todo esto a nivel de programación es que no hay una variable específica para el "modo sigilo", sino que este se establece simplemente cambiándole el valor a la variable "ani" (que determina el gráfico que debe mostrar el personaje en cada momento dentro de los sprites de su modelo): los códigos 98 y 99 apuntan a las imágenes del personaje "invisible" (de pie y agachado respectivamente), y cualquier acción que no cubra explícitamente esta excepción cambiará su animación y, por lo tanto, deja de estar en "modo sigilo" (las únicas excepciones que mantienen a "ani" a 98 ó 99 están al pulsar ↑ o ↓ desde suelo firme, es decir: puedes agacharte o preparar acciones especiales y, mientras lo haces, también puedes encararte hacia un lado u otro pulsando a la vez ← o → sin perder el "modo sigilo", pero en cuanto avances un paso o hagas cualquier otra cosa, se acabó.
La variable "ani" es pública (cualquier proceso o función del juego puede acceder a ella), de modo que basta con ese criterio para que los enemigos sepan cuándo no deben poder localizar al personaje (y cuándo sacarle del "modo sigilo" si pasan accidentalmente lo bastante cerca de su posición).
#MystCrystal #GBA #dev #indie #pixelart #linuxgaming