Registrarse

[pokeruby] Editando a un entrenador completamente

Lunos

Enfrentando a La Organización
Miembro insignia
Holi. Ya no me queda mucho mas por compartir de momento, asi que hoy iremos con algo sencillo pero que está bien documentar.
El dia de hoy modificaremos a un entrenador totalmente en lo que a contenido In-Game se refiere.
Sin nada mas que decir, empecemos.

Requisitos:
-Leer mi tema de introducción a Pokeruby.
-Editor de texto (yo usaré Notepad++)

Instrucciones:
1) Para empezar, abriremos el archivo Pokeruby\src\data\trainers_en.h con nuestro editor de texto.
Usando Ctrl+F buscaremos el nombre del entrenador a editar. Yo usaré a Calvin, el primero de todos despues del Rival.
La busqueda me llevó a la Linea 4454, donde podemos apreciar lo siguiente:
[TRAINER_CALVIN_1] =
{
.partyFlags = 0,
.trainerClass = TRAINER_CLASS_YOUNGSTER,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
.trainerPic = TRAINER_PIC_YOUNGSTER,
.trainerName = _("CALVIN"),
.items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = 0x1,
.partySize = 1,
.party = {.NoItemDefaultMoves = gTrainerParty_Calvin1 }
},
Pasaré a explicar los parametros que yo puedo entender.

.trainerClass: La clase de entrenador del NPC.
.encounterMusic_gender: La musica que sonará durante la batalla dependiendo del genero de el NPC.
.trainerPic: El sprite que usará el NPC en batalla.
.trainerName: El nombre que tendrá el NPC en batalla.
.items: Los 4 objetos que podrá usar el entrenador en batalla.
.doubleBattle: Flag que determina si el NPC retará a una batalla doble a el Jugador.
.aiFlags: Nivel de dificultad de la IA (0 a 7).
.partySize: Cantidad de pokémon que tendrá el NPC.

Esto lo quise dejar para lo ultimo porque si.
.partyFlags y .party parecen funcionar en conjunto, y sirven para determinar si los pokémon del NPC tendrán un moveset personalizado o usarán movimientos que tengan en su nivel por defecto.

Explicado todo esto, yo decidí reemplazar a Calvin como mencioné antes.
Cambié su información tal que asi:
[TRAINER_CALVIN_1] =
{
.partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
.trainerClass = TRAINER_CLASS_RUIN_MANIAC,
.encounterMusic_gender = TRAINER_CLASS_RUIN_MANIAC,
.trainerPic = TRAINER_PIC_RUIN_MANIAC,
.trainerName = _("PANCHO"),
.items = {ITEM_POTION, ITEM_POTION, ITEM_X_ATTACK, ITEM_X_SPEED},
.doubleBattle = FALSE,
.aiFlags = 0x7,
.partySize = 2,
.party = {.NoItemCustomMoves = gTrainerParty_Calvin1 }
},
Como habrán podido notar, yo cambié la cantidad de pokémon a 2.
Eso significa que a la hora de editar su equipo que será lo siguiente que haremos, tendré que crear una nueva entrada para este segundo pokémon.

2) Y ahora vamos a editar el equipo de nuestro buen Pancho.
Abriremos el archivo Pokeruby\src\data\trainer_parties.h con nuestro editor de texto.
Aquí buscaremos a nuestro entrenador por su nombre, usando Ctrl+F.
Mi busqueda me llevó a la Linea 4265, donde tengo esto:
Código:
const struct TrainerMonNoItemDefaultMoves gTrainerParty_Calvin1[] = {
    {
	.iv = 0,
	.level = 5,
	.species = SPECIES_ZIGZAGOON
    }
};
.iv = Cantidad de IVs que tendrá el pokémon en todos sus stats.
.level = Su nivel.
.species = Cual pokémon será.

Siguiendo las ediciones que hice, modifiqué el equipo de Calvin de la siguiente forma:
Código:
const struct TrainerMonNoItemCustomMoves gTrainerParty_Calvin1[] = {
    {
	.iv = 120,
	.level = 3,
	.species = SPECIES_DIGLETT,
        .moves = MOVE_SPLASH, MOVE_GROWL, MOVE_LEER, MOVE_BULLET_SEED
    },
    {
	.iv = 120,
	.level = 2,
	.species = SPECIES_STANTLER,
        .moves = MOVE_ROAR, MOVE_TELEPORT, MOVE_WITHDRAW, MOVE_SWEET_SCENT
    }
};
^ Como habrán podido notar, tambien hay que modificar la flag para los movesets personalizados aquí.
Por defecto, Calvin tiene la flag "TrainerMonNoItemDefaultMoves", y yo la cambié por "TrainerMonNoItemCustomMoves".

3) C:\cygwin64\cygwin.bat
cd pokeruby
make

Aqui una muestra del resultado:


Y eso es todo.​
 
Arriba