En los JRPG más míticos, como los Final Fantasy, los combates aleatorios son parte primordial del gameplay. Pero Bravely Default introdujo una mecánica muy interesante: la posibilidad de configurar la frecuencia de éstos a gusto del jugador. Otros juegos, como Final Fantasy VIII o Final Fantasy X, ya introdujeron la posibilidad de reducir o anular por completo estos combates inesperados, pero Bravely Default lo añadió como parte de las opciones del juego.
Darle al jugador la posibilidad de decidir si quiere ponerse a «grindear» o, por otra parte, pasar a toda velocidad una zona sin que incordien esas hordas de monstruos es mejorar su experiencia de juego. Al fin y al cabo, si quiere estar continuamente matando enemigos para subir de nivel, lo va a hacer igualmente, y para el que quiera disfrutar la historia es un alivio desactivar la avalancha de enemigos.
El Rufián de Akoria tenía, desde el principio, un accesorio llamado Ningún Encuentro que, cuando se equipaba en cualquiera de los protagonistas desactivaba por completo los combates aleatorios. En la remasterización que estoy realizando para la versión 2020, «Ningún Encuentro» ha sido sustituido por el «Perfume repelente», un objeto que al usarlo permite al jugador elegir la frecuencia de combates aleatorios, como en Bravely Default.
Este tutorial, que espero que sea el primero de muchos más en la bitácora, te va a permitir crear tu propio Perfume repelente en RPG Maker 2003 —en realidad, en cualquiera de sus iteraciones, porque las opciones que vamos a usar están presentes en cualquier Maker—.
Contenidos
Perfume repelente
Requisitos
- Un objeto de tipo «Switch» o «Interruptor», que utilizaremos para activar el Evento automático.
- Dos «Switches» o «Interruptores», el primero para activar el Evento automático y el segundo para controlar si hemos usado el Perfume o no.
- Una «Variable» para controlar la frecuencia de los encuentros.
- Dos «Eventos comunes», el primero para el menú de opciones del Perfume y el segundo para controlar la frecuencia elegida.
En aras de la brevedad, vamos a asumir cinco tipos de frecuencia de los combates aleatorios. Es posible crear más o utilizar menos, pero para el propósito de este tutorial utilizaremos estas cinco frecuencias, ya que son las que he utilizado en El Rufián de Akoria.
- Ningún encuentro: 0 pasos. (1)
- Pocos combates: cada 60 pasos. (2)
- Frecuencia normal: cada 30 pasos. (3)
- Encuentros frecuentes: cada 15 pasos. (4)
- Encuentros habituales: cada 5 pasos. (5)
Con estos cinco puntos definidos, si el jugador quiere luchar mucho para ganar EXP, pondrá el ritmo cada 5 pasos, mientras que uno que no quiera evitar el combate pero no verse abrumado, elegirá la opción de pocos combates, cada 60 pasos.
Crear el objeto
Creamos el objeto en nuestra base de datos de Objetos. Podemos llamarlo Perfume repelente o como queramos.
Nos aseguramos que sea de tipo «Switch», elegimos en el desplegable que no se consuma y le asignamos un Interruptor. Éste interruptor, al activarse, llamará a un Evento común que prepararemos a continuación.
Crear los eventos comunes
En la página de «Eventos comunes» creamos uno nuevo, le ponemos el nombre que deseemos, como disparador elegimos «Autorun» y en «Condition Switch» escogemos el Interruptor que hemos definido en el objeto.
Después seleccionamos los siguientes comandos. Mediante elecciones de texto permitiremos al jugador navegar entre las dos opciones principales: Aumentar o Reducir la frecuencia de combates aleatorios. Cada elección altera la «Variable» que hemos definido, asignándole un valor entre 1 (ningún encuentro) y 5 (encuentros muy a menudo).
A continuación puedes encontrar los comandos.
@> Play SE: 'Pollen', 100, 100, 50@> Flash Screen: Once, (30,31,18,10), @0.5s @> Text: \>¿Modificar la frecuencia de combates aleatorios?\< @> Show Choices: \>Aumentar\<, \>Reducir\<, \>No cambiar nada\< : When [\>Aumentar\<] @> Text: \>¿Como cuánto quieres aumentar?\< @> Show Choices: \>Cada \c[5]5 pasos\c[0] (muchos)\<, \>Cada \c[2]15 pasos\c[0]\<, \>Cada \c[4]30 pasos\c[0] (normal)\< : When [\>Cada \c[5]5 pasos\c[0] (muchos)\<] @> Control Variables: [0061:Frec. Combates] = 5 @> Set Encounter Rate: 5 step(s) @> Text: \>Ahora ocurrirá un combate aleatorio cada \c[5]5 pasos\c[0].\< @> : When [\>Cada \c[2]15 pasos\c[0]\<] @> Control Variables: [0061:Frec. Combates] = 4 @> Set Encounter Rate: 15 step(s) @> Text: \>Ahora ocurrirá un combate aleatorio cada \c[2]15 pasos\c[0].\< @> : When [\>Cada \c[4]30 pasos\c[0] (normal)\<] @> Control Variables: [0061:Frec. Combates] = 3 @> Set Encounter Rate: 30 step(s) @> Text: \>Ahora ocurrirá un combate aleatorio cada \c[4]30 pasos\c[0].\< @> : Branch End @> Control Switches: [0062:Perfume usado] = ON @> Jump to Label: 7 @> : When [\>Reducir\<] @> Text: \>¿Como cuánto quieres reducir?\< @> Show Choices: \>\c[3]Ningún combate\c[0]\<, \>Cada \c[9]60 pasos\c[0] (pocos)\<, \>Cada \c[4]30 pasos\c[0] (normal)\< : When [\>\c[3]Ningún combate\c[0]\<] @> Control Variables: [0061:Frec. Combates] = 1 @> Set Encounter Rate: 0 step(s) @> Text: \>Combates aleatorios anulados.\< @> : When [\>Cada \c[9]60 pasos\c[0] (pocos)\<] @> Control Variables: [0061:Frec. Combates] = 2 @> Set Encounter Rate: 60 step(s) @> Text: \>Ahora ocurrirá un combate aleatorio cada \c[9]60 pasos\c[0].\< @> : When [\>Cada \c[4]30 pasos\c[0] (normal)\<] @> Control Variables: [0061:Frec. Combates] = 3 @> Set Encounter Rate: 30 step(s) @> Text: \>Ahora ocurrirá un combate aleatorio cada \c[4]30 pasos\c[0].\< @> : Branch End @> Control Switches: [0062:Perfume usado] = ON @> Jump to Label: 7 @> : When [\>No cambiar nada\<] @> Label: 7 @> Control Switches: [0061:Encender Perfume] = OFF @> : Branch End
Como se puede ver, al elegir cualquiera de las opciones del Perfume, se activa el segundo Interruptor para poner en funcionamiento un «Proceso paralelo» que controlará la frecuencia de combates aleatorios.
Hay que tener en cuenta que si ofrecemos esta posibilidad al jugador, tendremos que desactivar el Interruptor de «Perfume usado» mediante eventos para modificar la frecuencia de combates. No estaría de más avisar al jugador cuando esto suceda.
@> Conditional Branch: Variable [0061:Frec. Combates] == 5 @> Set Encounter Rate: 5 step(s) @> : Branch End @> Conditional Branch: Variable [0061:Frec. Combates] == 4 @> Set Encounter Rate: 15 step(s) @> : Branch End @> Conditional Branch: Variable [0061:Frec. Combates] == 3 @> Set Encounter Rate: 30 step(s) @> : Branch End @> Conditional Branch: Variable [0061:Frec. Combates] == 2 @> Set Encounter Rate: 60 step(s) @> : Branch End @> Conditional Branch: Variable [0061:Frec. Combates] == 1 @> Set Encounter Rate: 0 step(s) @> : Branch End
Ningún encuentro
Como se ha descrito al comienzo del artículo, en un principio El Rufián de Akoria contaba con una reliquia denominada Ningún encuentro, que al llevarla equipada reducía a 0 los encuentros aleatorios. Podemos replicarlo, teniendo en cuenta todo lo indicado en el tutorial anterior.
Requisitos
- Un objeto de tipo «Accesory», aunque puede ser un arma, una armadura, un escudo, etc. Cualquier objeto que se pueda equipar en un personaje.
- Un Evento común con «Proceso paralelo» como disparador.
Tras crear el objeto, nos vamos a la pestaña de Eventos comunes y creamos uno nuevo, con Proceso paralelo como disparador. Para el objetivo de este tutorial, comprobaremos si lo lleva equipado el primer personaje de la base de datos, aunque la comprobación se puede ampliar a todos los personajes encadenando Condicionales.
@> Conditional Branch: [Dorian] has [Ningún encuentro] equipped @> Conditional Branch: Variable [0061:Frec. Combates] > 0 @> Control Variables: [0061:Frec. Combates] = 0 @> Control Switches: [0062:Perfume usado] = OFF @> Text: \>El efecto del \c[9]Perfume repelente\c[0] ha sido\< : : \>anulado por la presencia de \c[10]Ningún encuentro\c[0].\< @> : Branch End @> Set Encounter Rate: 0 step(s) @> : Else @> Conditional Branch: Variable [0061:Frec. Combates] > 0 @> Call Event: [Encuentros] @> : Else @> Set Encounter Rate: 30 step(s) @> : Branch End @> : Branch End
Como se puede ver en la imagen, hemos añadido un condicional para comprobar si se ha usado anteriormente el Perfume repelente. Si se ha utilizado el Perfume, el efecto de Ningún encuentro no se aplicaría en ningún caso. Si no se quiere tener en cuenta el objeto del Perfume, el código sería el siguiente.
@> Conditional Branch: [Dorian] has [Ningún encuentro] equipped @> Control Switches: [0062:Perfume usado] = OFF @> Set Encounter Rate: 0 step(s) @> : Else @> Set Encounter Rate: 30 step(s) @> : Branch End
Y si, simplemente, no vamos a usar el Perfume repelente en absoluto, bastaría con eliminar el control de Interruptor del código.
Como ya se ha indicado en la sección del Perfume, crear este método de comprobación impide al desarrollador definir la frecuencia de combates aleatorios si no se utiliza un Interruptor.
Ponemos a tu disposición un archivo con el ejemplo: necesitas usar RPG Maker 2003 actualizado a su última versión, la 1.12 de Steam y tener el RTP instalado para poder abrirlo.
Cualquier duda que tengas, estaremos encantados de responder en la sección de comentarios más abajo.
Si quieres adquirir una copia de RPG Maker 2003, lo puedes encontrar en Steam o en la tienda de Humble Bundle.