Dando Cuerpo A Nuestro Mundo

Objetivos del Tema

Durante los últimos temas, hemos cubierto muchos aspectos básicos pero importantes de RMMV.

Ahora es el momento de aprovechar lo aprendido para empezar a crear nuestro propio juego. Lo primera que haremos será agregar algunos mapas más, ya que solo tenemos los dos que creamos hasta ahora.

Para asegurarnos de que estamos usando el mismo contenido, y también para mostrar la características más relevantes, usemos algunos mapas predefinidos.

 • Empezaremos a dar cuerpo a nuestra historia

Agregar Contenido A Nuestro Mundo

Dos juegos de rol son pueblos y mazmorras. Además, la mayoría de los juegos de rol tienen un mapa del mundo que conecta las distintas ubicaciones que el jugador puede visitar durante el juego. Entonces, en esa nota, agreguemos tres nuevos mapas de la selección prefabricada que RMMV tiene disponible. • Desde la pantalla del mapa principal, haga clic con el botón derecho en el nombre de su proyecto en la esquina inferior izquierda y seleccione Cargar. Podría haber hecho lo mismo haciendo clic con el botón derecho en MAP001 o en su segundo mapa. Eso habría provocado que el nuevo mapa se colocara debajo del mapa anterior. Hacerlo es bastante útil para organizar mapas que comparten un propósito similar. Figura 4-1 muestra un ejemplo de lo que quiero decir.  • Un ataque que atraviesa la defensa del enemigo: Si deseas modificar la fíormula básica, utiliza [a.atk*4] en vez de [a.atk*4-b.def*2]. Una habilidad que no tenga en cuenta la defensa de un enemigo en la fórmula de daño hará daño según el ataque del usuario. Asimismo, puede realizar un hechizo con el formato [a.mat], en lugar de [a.mat-b.mdf], tener una habilidad de perforación de defensa mágica.

 • Un ataque que causa daño basado en el PV del objetivo: También puede conectar PV Máximo y PV (PV actual) en fórmulas (PM máximo y PM actual). ¿Y si quisieras realizar un ataque de gravedad en la línea del hechizo de Demi en Final Fantasy? Las habilidades de gravedad, por definición, no pueden matar a su objetivo. Entonces, usemos PV. Escribiremos [b.hp/4] que resultaría en una habilidad que causa un daño equivalente a una cuarta parte del PV restante del enemigo. Si tuviéramos que cambiar PV por PV Máximo, la misma habilidad haría una cuarta parte de su PV máximo en daño.

 • Una habilidad que aumenta las estadísticas del usuario mientras daña al enemigo: Si observas la funcionalidad de stock de RMMV, notarás que esto es aparentemente imposible. Si creas un ataque y usas Efectos para agregar estados o estadísticas de mejora/desventaja, verás que el objetivo también las obtendrá. Pero quizás quieras una habilidad que aumente mi Agilidad durante dos turnos cada vez que me conecto con ella. Podríamos usar .addBuff() para lograr eso (.addDebuff() reduce una estadística en su lugar). Entonces, una habilidad que aumenta la agilidad del usuario durante dos turnos mientras daña a un enemigo se vería como: [a.addBuff(6,2);a.atk*4-b.def*2].

 ¿Qué pasa con los números entre paréntesis en el .addBuff()? Cuando agregamos ventajas o desventajas a través del cuadro de fórmulas de daño, puedes declarar el parámetro (estadística) a afectar, así como la duración del turno. El primer parámetro es la Agilidad y el segundo la Duración del turno.

Abreviaturas De Los Parámetros

Si tienes curiosidad por ver las diversas abreviaturas de parámetros en RPGMaker MV, hagamos un breve viaje a la tierra de JavaScript.

 • Si estás usando Windows, abre el Bloc de notas y luego dirígete a la carpeta js de su proyecto de juego. El archivo JavaScript que nos interesa se llama rpg_objects.js.

 • Si estás utilizando Mac OS, cualquier procesador de texto básico le servirá tanto como el Bloc de notas. Busca el archivo rpg_objects.js en la carpeta js de su proyecto de juego.

 • En cualquier caso, abriremos el archivo JavaScript y nos dirigiremos a Game_BattlerBase. Si te desplazas hacia abajo después de encontrar esta zona del archivo, en la parte derecha del código encontrarás un objeto JavaScript (Object.defineProperties) que contiene una lista de parámetros y sus valores internos. Dado que el código MV relevante tiene más de tres páginas, vamos a ver los más utilizados.

Nota: Las ventajas y desventajas solo se aplican a los primeros ocho de la lista (en otras palabras, desde MHP hasta LUK).

Los Estados

Los estados principalmente funcionan de la misma manera.

Puedes declarar .addState(X), donde X es la entrada de la base de datos para el estado que desea utilizar. El número de turnos que durará un estado está determinado por las propiedades del estado en la base de datos.

Entonces si tenemos la lista predeterminada de estados (de los cuales hay 10), podemos realizar un ataque que envenene al usuario y dañe al enemigo de la siguiente manera: a.addState(4);a.atk*4-b.def*2.

Es bueno tener en cuenta que solo necesitamos usar los comandos cuando deseamos aplicar efectos tanto al usuario como al objetivo. Si tienes un hechizo de curación que también aumenta la agilidad, puedes cubrirlo bien con una fórmula de daño y el efecto de adición de beneficio (o puedes usar también un efecto de recuperación de PV para la parte de curación del hechizo).

Echemos un vistazo a la pestaña Estados de la Base de datos.

Como señalamos anteriormente, usar .addState requiere que se establezca qué estado desea agregar, y examina el valor de la base de datos para determinar qué agregar. Entonces, Muerte es 1, mientras que Ceguera es 5, por ejemplo.

Los estados tienen una o dos cosas nuevas, pero no muchas que no hayamos visto ya en una forma similar.

 • Configuración general:

  - Restricción: Define lo que le sucede a alguien afectado por el estado. La mayoría de las opciones son acciones más forzadas que restricciones. En el caso de Muerte, el actor o enemigo No se puede mover (lógicamente, ¡ya que están muertos!). Sin embargo, también tienes Nada, Atacar a los enemigos, Atacar a cualquiera, y Ataca a los aliados.


 • Condiciones de eliminación: Definimos cuando se elimina un estado. Esto es más importante para los actores, dado que los enemigos dejan de existir después de que terminas de luchar con ellos. Si no define ninguna condición de eliminación, la única forma de eliminar el estado sería tener un elemento o evento que haga precisamente eso.

  - Al final de la batalla: Es autoexplicativo. Una vez que la batalla termina, también termina el estado.

  - Por otra restricción: Será reemplazado por un nuevo estado con una restricción de acción diferente. Por ejemplo, puede tener un estado de Rabia que se ve afectado por restricciones, de modo que si su actor afectado por Rabia queda aturdido u obstaculizado de alguna otra manera, pierde el estado.

  - Eliminación automática: Te permite establecer si el estado se elimina automáticamente después de un cierto número de turnos o no.

   ◦ Fin de la acción: Significa que el estado se eliminará después de que el actor o enemigo afectado realice una determinada cantidad de acciones.

   ◦ Fin de turno: Significa que el estado se eliminará después de un cierto número de turnos de batalla.


  - Duración en turnos: Solo se puede editar si ha seleccionado Fin de la acción o Fin de turno en Eliminación automática. El primer cuadro define el número mínimo de turnos que durará el estado, mientras que el segundo cuadro indica el número máximo de turnos.

  - Remover por daño: Da un porcentaje de probabilidad basado en el número colocado en la casilla correspondiente para eliminar el estado cuando el actor o enemigo sufre daño.

  - Remover al caminar: El estado se elimina automáticamente después de que el actor da un cierto número de pasos en el mapa. Puede tener cualquier número del 0 al 9999 en ese cuadro.


 • Mensajes: Hay cuatro tipos de Mensajes puedes editar.

 Aparecen cuando un actor recibe un estado, un enemigo recibe un estado, el final de un turno cuando un actor o enemigo todavía se ve afectado por un estado (si el estado persiste) y cuando el estado se elimina.

Nota: Vale la pena mencionar que el estado 0001 es un estado especial que se aplica automáticamente cada vez que los Puntos de Vida (PV) de un personaje llegan a 0. Por defecto, se llama Muerte.

Volvamos A Las Fórmulas De Daño

De vuelta a las fórmulas de daño, ya vimos la existencia de addBuff() y addState().

De paso, removeBuff() y removeState() también existen. Los métodos de eliminación solo aceptan un único parámetro entre paréntesis.

En el caso de removeBuff(), declaras para cuál de las ocho estadísticas principales deseas eliminar un beneficio. Para removeState(), le indicas qué estado se eliminará.

En el caso que vimos anteriormente ([a.addBuff(6,2);a.atk*4-b.def*2] hemos utilizado un punto y coma para dividirlos de la fórmula de daño. Hay una regla poco conocida sobre las fórmulas de daño que no se menciona dentro de RMMV, pero aquí está:

En cualquier fórmula, debe terminar la fórmula con un valor de daño (o curación, según sea el caso).

La forma más fácil de probar o refutar esa afirmación es editando la fórmula de daño de tu nueva habilidad de arco y agregando un punto y coma después del daño con un comando addState() o addBuff() (recuerda que "a" antes del comando denota usuario, mientras que "b" denota objetivo). Si lo hiciste correctamente, verás que tu habilidad ahora no hace nada más que aplicar el beneficio o el estado. Ahora, cambia las dos mitades de la fórmula y volverás a hacer daño.

Aquí hay algunas otras cosas interesantes que puede hacer con las fórmulas de daño:

 • Crear una habilidad que cause más daño según los estados activos del objetivo: Digamos que quieres un enemigo que envenene al grupo del jugador y luego intente consumir ese veneno para causar daño a sus víctimas. Podrías tener una fórmula como esta:

  if (b.isStateAffected(x)) {b.removeState(x); Winter.phys(1.0,a,b);} else {0}

 isStateAffected() es otro método dentro de RMMV. Como sugiere el nombre, comprueba si el objetivo tiene X estado, donde X es el número del estado en la base de datos.

 Si el objetivo tiene X estado, la habilidad elimina el estado y luego aplica una fórmula de daño personalizada (esa es la parte Winter.phys).

Nota: También necesitaremos otra habilidad que inflija un estado que su nueva habilidad pueda eliminar, si desea probar la fórmula.

 Si el objetivo no tiene X estado, entonces la habilidad hace 0 de daño.

Los que tengáis experiencia en programación reconoceréis la fórmula anterior como una rama condicional "If". La caja de fórmula de daño es completamente robusta. Puede contener cualquier cantidad de JavaScript que pueda caber en la misma (lo cual, dado que el cuadro de daño de MV no tiene límite de caracteres, es bastante inmenso).

Retos

Reto 1

Haz un grupo de enemigos con un solo monstruo que diga algunas palabras antes de morir.

Ejemplo de Solución

Reto 2

Crea un enemigo con tres habilidades diferentes (incluida la habilidad de ataque normal). Tener una habilidad requiere que el enemigo esté en un estado para usar, y otra de sus habilidades otorga ese estado.

Ejemplo de Solución

Reto 3

Crea un enemigo que use una sola habilidad en una cuenta regresiva de tres turnos.

Ejemplo de Solución

Reto 4

Crea una fórmula de daño que incluya una variable.

Ejemplo de Solución



Volver al índice

Fun Tech Academy - Calle Alcobendas, 23 Leganés 28914 Madrid - www.funtech.academy