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
Consejo: Recuerda que tras definir o modificar entrenadores en los archivos PBS, debes compilar el juego (opción en el menú Debug o presionando F10 en modo de prueba) para que los cambios surtan efecto.