Definir un Entrenador
Los entrenadores en Pokémon Essentials se definen mediante dos archivos PBS principales:
trainer_types.txt (tipos de entrenador) y trainers.txt (entrenadores
individuales). Ambos se encuentran en la carpeta PBS/ de tu proyecto.
Archivo trainer_types.txt
Este archivo define las clases o tipos de entrenador (por ejemplo, "Líder de Gimnasio", "Montañero", "Joven"). Cada tipo de entrenador tiene las siguientes propiedades:
| Propiedad | Tipo | Descripción |
|---|---|---|
InternalName |
Texto | Nombre interno único usado en scripts y PBS (ej: POKEMONTRAINER_Red). Obligatorio. |
Name |
Texto | Nombre visible que se muestra al jugador (ej: "Entrenador Pokémon"). Obligatorio. |
BaseMoney |
Número | Multiplicador base de dinero ganado al derrotarlo. El premio total es
BaseMoney × nivel del último Pokémon. Por defecto: 30. |
SkillLevel |
Número | Nivel de habilidad de la IA durante el combate. Valores más altos hacen al entrenador más inteligente. Por defecto: igual al nivel medio del equipo. |
Flags |
Texto | Indicadores especiales separados por comas. Los valores posibles incluyen: DoubleBattle
(fuerza combate doble), Pokemon (usa sprite de Pokémon). |
IntroMusic |
Texto | Nombre del archivo BGM que suena al iniciar la batalla con este tipo de entrenador. Por defecto: el BGM de batalla estándar. |
Ejemplo de trainer_types.txt
[YOUNGSTER]
Name = Joven
BaseMoney = 16
SkillLevel = 12
[LEADER_Brock]
Name = Líder de Gimnasio
BaseMoney = 100
SkillLevel = 75
IntroMusic = Battle gym leader
[CHAMPION]
Name = Campeón
BaseMoney = 200
SkillLevel = 100
IntroMusic = Battle champion
Archivo trainers.txt
Este archivo define a cada entrenador individual con su equipo Pokémon. Cada bloque de entrenador se identifica por su tipo, nombre y versión opcional.
Propiedades del entrenador
| Propiedad | Tipo | Descripción | Valor por defecto |
|---|---|---|---|
Type |
Texto | Nombre interno del tipo de entrenador definido en trainer_types.txt. Obligatorio. |
ninguno |
Name |
Texto | Nombre propio del entrenador (ej: "Brock", "Misty"). Obligatorio. | ninguno |
Version |
Número | Versión del entrenador para combates progresivos (0, 1, 2...). Permite que el mismo entrenador tenga equipos diferentes. Por defecto: 0. | 0 |
LoseText |
Texto | Diálogo que dice el entrenador al ser derrotado. | ninguno |
LoseTextF |
Texto | Diálogo que dice el entrenador al ser derrotado por un jugador femenino. | ninguno, utilizará el del LoseText si no se especifica. |
Items |
Lista | Objetos que el entrenador puede usar durante el combate, separados por comas (ej:
FULLRESTORE,FULLRESTORE). |
ninguno |
Pokemon |
Bloque | Define cada Pokémon del equipo del entrenador. Puede haber hasta 6 bloques Pokémon. | ninguno |
Sub-propiedades de cada Pokémon
| Propiedad | Tipo | Descripción | Valor por defecto |
|---|---|---|---|
Species |
Texto | Nombre interno de la especie (ej: PIKACHU). Obligatorio. |
ninguno |
Level |
Número | Nivel del Pokémon (1-100). Obligatorio. | ninguno |
Moves |
Lista | Hasta 4 movimientos separados por comas. Si se omite, se usan los movimientos aprendidos por nivel. | ninguno |
Ability |
Texto | Nombre interno de la habilidad específica (ej: INTIMIDATE). |
ninguno |
AbilityIndex |
Número | Índice de la habilidad: 0 = primera, 1 = segunda, 2+ = habilidad oculta. | 0 |
Item |
Texto | Objeto equipado (ej: SITRUSBERRY). |
ninguno |
Gender |
Texto | Género del Pokémon: male, female. |
ninguno |
Nature |
Texto | Naturaleza del Pokémon (ej: ADAMANT, JOLLY). |
ninguno |
IVs |
Lista | IVs individuales separados por comas en orden: PS, Ataque, Defensa, Velocidad, At.Esp, Def.Esp. Cada valor va de 0 a 31. | ninguno |
EVs |
Lista | EVs separados por comas en el mismo orden que IVs. Cada valor va de 0 a 252. | ninguno |
Happiness |
Número | Felicidad del Pokémon (0-255). Afecta al daño de Retribución y Frustración. | ninguno |
Shiny |
Booleano | true para hacer al Pokémon shiny (variocolor). |
false |
SuperShiny |
Booleano | true para un brillo de estrellas cuadradas (si está implementado). |
false |
Shadow |
Booleano | true para convertirlo en un Pokémon Oscuro. |
false |
Ball |
Texto | Tipo de Poké Ball (ej: ULTRABALL). Afecta la animación al entrar en combate. |
ninguno |
Form |
Número | Número de forma alternativa del Pokémon (ej: forma Alola = 1). | 0 |
Ejemplos de trainers.txt
Entrenador simple
[YOUNGSTER,Pepito]
LoseText = ¡Vaya, eres muy fuerte!
Pokemon = RATTATA,12
Pokemon = PIDGEY,13
Líder de Gimnasio
[LEADER_Brock,Brock]
LoseText = Tu vínculo con tus Pokémon es impresionante.
Items = POTION,POTION
Pokemon = GEODUDE,12
Moves = TACKLE,DEFENSECURL,ROCKTHROW,HEADSMASH
AbilityIndex = 0
IVs = 20,20,20,20,20,20
Pokemon = ONIX,14
Moves = TACKLE,HARDEN,ROCKTHROW,ROCKTOMB
Item = SITRUSBERRY
Nature = IMPISH
IVs = 20,20,20,20,20,20
Alto Mando (Elite Four)
[ELITEFOUR,Lorelei]
LoseText = Los Pokémon de hielo son hermosos y poderosos... pero hoy tú lo fuiste más.
Items = FULLRESTORE,FULLRESTORE
Pokemon = DEWGONG,54
Moves = SURF,ICEBEAM,SIGNALBEAM,HAIL
Ability = THICKFAT
Item = LEFTOVERS
Nature = MODEST
IVs = 31,31,31,31,31,31
EVs = 252,0,0,0,252,4
Pokemon = CLOYSTER,53
Moves = ICICLECRASH,SHELLSMASH,ROCKBLAST,HYDROPUMP
Ability = SKILLLINK
Item = FOCUSSASH
Nature = JOLLY
IVs = 31,31,31,31,31,31
EVs = 0,252,0,252,0,4
Shiny = true
Pokemon = LAPRAS,56
Moves = ICEBEAM,THUNDERBOLT,SURF,PSYCHIC
Item = CHOICESPECS
Nature = MODEST
IVs = 31,31,31,31,31,31
EVs = 252,0,0,0,252,4
Ball = DIVEBALL
Gráficos de entrenadores
Los sprites de los entrenadores se almacenan en la carpeta Graphics/Trainers/. El nombre del
archivo debe coincidir con el InternalName del tipo de entrenador definido en
trainer_types.txt.
| Ubicación | Descripción |
|---|---|
Graphics/Trainers/YOUNGSTER.png |
Sprite frontal del tipo de entrenador "Joven". |
Graphics/Trainers/LEADER_Brock.png |
Sprite frontal del Líder de Gimnasio Brock. |
Los sprites deben tener un fondo transparente y seguir las dimensiones estándar. Generalmente son imágenes de 128×128 píxeles o más grandes, dependiendo del estilo visual de tu juego.
Iniciar un combate contra un entrenador
Existen dos formas principales de iniciar una batalla con un entrenador definido en el PBS:
Comando de evento: TrainerBattle
Desde un evento de RPG Maker, utiliza un Script con la siguiente llamada:
# Combate simple
TrainerBattle.start(:YOUNGSTER, "Pepito")
# Combate con versión específica (para rivales o recombates)
TrainerBattle.start(:LEADER_Brock, "Brock", 0)
# Combate doble
TrainerBattle.start(:YOUNGSTER, "Pepito", 0, nil, true)
Función pbTrainerBattle (forma clásica)
# Combate básico
pbTrainerBattle(:YOUNGSTER, "Pepito")
# Combate con versión 1 (segunda versión del entrenador)
pbTrainerBattle(:LEADER_Brock, "Brock", 1)
# Con texto de fin de batalla personalizado
pbTrainerBattle(:CHAMPION, "Lance", 0, "¡Fue un combate épico!")
Resultado del combate
Ambas funciones devuelven un valor que puedes usar para determinar el resultado:
resultado = TrainerBattle.start(:YOUNGSTER, "Pepito")
if resultado
# El jugador ganó la batalla
pbMessage("¡Has demostrado tu fuerza!")
else
# El jugador perdió (raro si no se permite perder)
pbMessage("Mejor suerte la próxima vez...")
end