Como ya comenté, el sistema de batalla por defecto en el RPG Maker MZ no me acababa de gustar, al menos para el concepto de juego que tenía en mente. Por ello me dediqué a ampliarlo y mejorarlo mediante el uso de diversos scripts y recursos. A continuación os cuento todos los cambios realizados, y quien sabe, quizás puedan resultar útiles para otras personas.
Sistema de Batalla Lateral
Por defecto, el motor ya incorpora una opción para utilizar un sistema de batalla lateral, con un estilo similar al de los primeros Final Fantasy, por ejemplo. Pero este sistema no me acaba de gustar, ya que los enemigos son simples figuras estáticas sin animaciones. Para mi juego, yo quería que ambos bandos tuvieran el mismo formato de sprite y animación. Así que me puse a investigar.

En un primer momento encontré un sistema que parecía perfecto, pues cumplía con todos mis requisitos y más todavía. Se trataba del Akea Animated Battle System 2, y parecía perfecto. Demasiado perfecto, la verdad. Y tras muchos días peleándome con el mismo, al final lo descarté. El sistema resultaba bastante complicado de configurar, y creaba muchos conflictos con otros scripts. Una pena.
Tras seguir explorando Internet, finalmente di con la página de HimeWorks. Al navegar por ella, vi que tenía diversos scripts que, al unirlos, añadían al juego la funcionalidad que yo necesitaba, ¡y sin conflictos! Pura felicidad, para que os voy a engañar.
Sprites Animados para los Enemigos
Sideview Actor Enemies
Este script nos permite utilizar los mismos sprites que usan los personajes para los enemigos. Es decir, que utiliza el propio sistema del motor para animar a los enemigos, sin necesidad de configuraciones extras. Sencillo, ¿verdad? Y a la vez increíblemente potente.
Su uso resulta muy simple. Simplemente hay que añadir siguiente etiqueta en el apartado de notas del enemigo en cuestión. NAME hace referencia al nombre de la imagen a utilizar, sin extensión.

<sv actor name: NAME />
Por defecto, las imágenes de los enemigos también han de estar almacenadas en la carpeta sv_actors. Esto me ponía de los nervios, así que modifiqué la línea 129 del script, indicando que cargara las imágenes desde la carpeta sv_enemies.
Sprite_EnemyActor.prototype.updateBitmap = function() {
Sprite_Battler.prototype.updateBitmap.call(this);
var name = this._actor.svActorName();
if (this._battlerName !== name) {
this._battlerName = name;
this._mainSprite.bitmap = ImageManager.loadSvEnemy(name);
this.scale.x = -1;
// this._mainSprite.scale.x = -1
this._stateSprite.scale.x = -1
}
};
Por cierto, el script también permite el uso de subcarpetas.
<sv actor name: folder/NAME />
Por último, si queremos que también se muestren las animaciones de las armas durante los ataques, debemos instalar el script «Sideview Actor Enemy Weapons», el cual está disponible en la misma página de descarga. Con activarlo ya es suficiente, pero ojo, que antes hemos de configurar el equipo de cada enemigo.
Uso de Equipo Personalizado
Equip Slots Core
Por defecto, RPG Maker tiene determinados los tipos de equipamiento que un personaje puede utilizar. Estos pueden ser modificados en la Base de Datos, pero son comunes a todos los personajes. Y encima sólo se puede equipar uno de cada tipo.
Este script nos permite personalizar completamente el tipo de equipamiento que utilizará cada personaje. Esto da una increíble libertad a la hora de definir las diversas clases, puesto que el equipo es independiente de la misma. Su configuración se realiza mediante el uso de etiquetas, como el anterior.
<equip slot: ETYPE>
En esta ocasión, ETYPE hace referencia al equipamiento que se encuentra definido en la propia Base de Datos. Podemos utilizar tanto su número en la Base de Datos como el propio nombre como referencia a la hora de definir la etiqueta. Por ejemplo, podríamos utilizar tanto el número 1 como el término “Arma”.

Por último, la Base de Datos sólo nos permite definir un tipo a cada equipamiento. Esta limitación desaparece gracias a este script, pues nos permite definir tipos extras mediante el uso de etiquetas. Por ejemplo, si definimos diferentes armas para cada mano, una misma daga podría equiparse en ambas.
<equip type: TYPE />
Equipo Inicial del Jugador
También es posible definir mediante el uso de etiquetas el equipo inicial que un personaje utilizará. Para ello utilizamos la etiqueta ITEMCODE, la cual está formada por una letra y un número. La letra hace referencia al tipo de equipamiento (weapon, armor o item), y el número a su posición en la Base de Datos. Por ejemplo, la primera arma definida sería referenciada como w1.
<equip slot: ETYPE ITEMCODE>
Algunas Funciones Útiles
Hay que tener en cuenta, como se ha comentado antes, que este script define el equipo de un personaje, no de una clase. Para poder modificarlo durante la propia ejecución del juego, disponemos de diversas funciones:
- $gameActors.actor(n).addEquipSlot(ETYPE)
Para añadir espacios de equipo (se añade en último lugar). - $gameActors.actor(n).removeEquipSlot(ETYPE)
Para eliminar espacios de equipo (quita el primero que encuentra).
Enemy Equips
Este script nos permite definir el equipo de los enemigos a través del script Equip Slots Core simplemente instalándolo. Su configuración inicial es idéntica, por lo que utiliza las mimas etiquetas ya mencionadas anteriormente.
Modificaciones Durante el Juego
El script incorpora diversas funciones y utilizades destinadas a modificar el equipamiento de los enemigos durante la ejecución del juego, ya que el motor no dispone de herramientas propias para ello, al tratarse de una funcionalidad nueva. Esto requiere algo de código, pero su uso es muy sencillo:
var enemy = $gameTroop.members()[INDEX]; var weapon = $dataWeapons[n]; enemy.changeEquip(0, weapon);
- En primer lugar debemos obtener la referencia del enemigo sobre el que queremos realizar modificaciones. Esta la almacenamos en la variable enemy. La variable INDEX hace referencia al enemigo en cuestión, siendo 0 el primero de la escena, 1 el segundo, y así con todos.
- A continuación debemos obtener el arma que queremos equipar. Para ello guardamos en la variable weapon el arma directamente desde la Base de Datos. En esta ocasión, la variable n hace referencia a su posición en la misma.
- Por último, equipamos dicha arma en la ranura correspondiente mediante el uso de la función enemy.changeEquip(SLOT_INDEX, EQUIP). La variable SLOT_INDEX hace referencia a la posición de la etiqueta definida, y EQUIP al arma a equipar.
Pues estas son las principales modificaciones que he realizado sobre el Sistema de Batalla por defecto en Nigrum. Falta una más, que es el uso de equipos de tres personajes en lugar de cuatro, pero todavía no está afinada del todo, ya que para lograrlo he tenido que ir modificando diferentes líneas a través de los diversos scripts del sistema. ¿Os interesaría que hablara sobre ello?
¡Nos leemos!
¿Quieres estar al día de todo lo publicado en el blog?
Para ello puedes suscribirte a mi canal RSS y/o seguirme en mis Redes Sociales.
