Hace unos días en Steam todos los Rpgmaker estaban en oferta, compré el Rpgmaker vx ace a 90% de descuento y desde entonces lo he estado usando, este fue un pequeño programa que aquí lo denominan evento que hice una noche que no podía dormir, es una pequeña prueba, para ver si podía hacer algo parecido al sistema D20 con Rpgmaker. Si tienen algún problema viendo las imágenes, pueden dar click derecho sobre la imagen que sean ver y abrir en nueva pestaña para verla mejor .
Lo que hice fue crear un evento, con el sprite de un monstruo, cada vez que el jugador toque al monstruo se generará el evento. Algo que recién acabo de descubrir de Rpgmaker es que no te deja copiar el código a un editor/procesador de texto.
Empecé haciendo las variables, hice una para todos los dados que se usan en el rol, así como las variables que uso para definir este evento.
En DnD y Pathfinder antes de un encuentro o combate, se realiza una tirada de iniciativa, que es el valor de un dado de 20 caras(D20) mas algunos modificadores, quien tenga el mayor valor es el primero. Las primeras 4 lineas rojas Del Código son eso, a la variable D20 se le
asigna un valor aleatorio entre 1 y 20, ese valor de nuevo se le asigna a la iniciativa del héroe(ResHer) o del enemigo(ResEne)
Luego se muestran los resultados y se abre una condicional if ó Separador Condicional en términos del programa, la cuál compara ambos valores de iniciativa. El programa permite usar varias pestañas para manejar distintas lineas de código, usé dos pestañas una con el interruptor(switch)A y otra con el Interruptor B . El interruptor A se «enciende»(true) en caso que el héroe tenga mayor iniciativa que el enemigo OH lentos Goblins!!! y viceversa con la iniciativa enemiga.
Hasta ese punto mi único dolor de cabeza fue que no se mostraban los valores de las variables y algo que no te dice Rpg maker, es que cuando usas el «código de control» \V[variable] debes usar el número de id de la variable y no su nombre.
La segunda y tercera pestaña son muy parecidas, la pestaña 2 tiene marcada la casilla de interruptor local A está encendido en el área de condiciones y respectivamente la pestaña 3 con el interruptor B.
Ya aquí es cuando empiezan los turnos de combate. Los turnos se componen de lanzar un dado de 20 caras mas bonificadores(si los hay), el resultado se compara con la defensa del oponente y si esta es igual o mayor se realiza un golpe, después se realiza una tirada
de daño de acuerdo al arma, un hacha tendrá un dado de 12 u 8 caras mientras que una daga un dado de 4 caras, en mi prueba usé un dado de 4 caras para el rival y uno tradicional de 6 caras para mi héroe
Las 2 primeras lineas lo que hacen es asignarle un valor a la variable Ataen que es la tirada del enemigo, se muestra la tirada y se abre otra separación condicional(if) si el ataque es igual o mayor a defenHer (que es igual a la defensa del personaje) si lo es, se le asigna un valor aleatorio a la variante D4 y este mismo valor se le asigna al daño, el cual se resta de los pv(hp) del héroe, con esto termina el turno del enemigo, así que para pasar al turno de mi personaje apagamos el interruptor B y encendemos el A,ahora la misma mecánica acontece en la pestaña dos, solo que los daños son para el enemigo y el dado de daño es un dado de 6 caras en vez de 4
Creo que escribí mas de lo que es realmente mi programa de combate, la verdad le faltan muchas cosas, el combate seguirá continuamente pues no le dí una variable para que termine el ciclo, podría usar un switch o una variable que cuando el hp de alguno llegue a cero se cierre el evento de combate, mi programa solo es esto:
- registrar dos variables aleatorias
- definir la mayor para ver quien comienza el turno primero
- comparar un numero aleatorio(dado) con la defensa del oponente
- si es mayor lanzar otro número(dado) para resta los puntos de vida del oponente
- cambiar al turno del oponente