Elegir Inicial

La selección del Pokémon inicial es uno de los momentos más emblemáticos de cualquier juego Pokémon. En Pokémon Essentials, este evento se configura en un mapa dedicado (generalmente el laboratorio del Profesor) y utiliza funciones específicas para ofrecer al jugador la elección clásica entre tres Pokémon.

Función pbChooseStarter

La función principal para la selección de inicial es:

pbChooseStarter

Esta función no se usa directamente en la mayoría de los proyectos. En su lugar, se implementa la selección mediante eventos en RPG Maker XP, usando Poké Balls sobre una mesa.

Configuración del Evento de Elección Triple

El método más común para elegir inicial es crear tres eventos en el mapa del laboratorio, cada uno representando una Poké Ball. La estructura típica de cada evento es:

Evento para cada Poké Ball

# Página 1 del evento (antes de elegir)
# Condición: Switch "Inicial Elegido" está OFF

pbMessage("¡Hay una Poké Ball en la mesa!")
pbMessage("Contiene a \\Pokemon[BULBASAUR]. ¿Quieres elegirlo?")

# Show Choices: "Sí", "No"
# Si elige "Sí":
pbAddPokemon(:BULBASAUR, 5)
$game_switches[SWITCH_INICIAL_ELEGIDO] = true
$game_variables[VAR_INICIAL] = 1    # 1=Planta, 2=Fuego, 3=Agua
pbMessage("¡Has recibido a \\Pokemon[BULBASAUR]!")

# Página 2 del evento (después de elegir)
# Condición: Switch "Inicial Elegido" está ON
# Gráfico: vacío (la Poké Ball ya no está)

Repite esta estructura para los tres iniciales, cambiando la especie y el valor de la variable.

Ejemplo completo con tres iniciales

Evento Pokémon Variable Tipo
Poké Ball 1 BULBASAUR (Nv. 5) $game_variables[7] = 1 Planta
Poké Ball 2 CHARMANDER (Nv. 5) $game_variables[7] = 2 Fuego
Poké Ball 3 SQUIRTLE (Nv. 5) $game_variables[7] = 3 Agua

Rival Elige el Inicial Opuesto

Después de que el jugador elige su inicial, el rival debe elegir el Pokémon con ventaja de tipo. Esto se implementa usando la variable que guardaste:

# En el evento del rival, después de la elección del jugador
# Usar "Conditional Branch" con la variable del inicial

# Si el jugador eligió Planta (variable = 1):
#   El rival elige Fuego → $game_variables[VAR_RIVAL_STARTER] = 2

# Si el jugador eligió Fuego (variable = 2):
#   El rival elige Agua → $game_variables[VAR_RIVAL_STARTER] = 3

# Si el jugador eligió Agua (variable = 3):
#   El rival elige Planta → $game_variables[VAR_RIVAL_STARTER] = 1

Para que el rival use el inicial correcto en combate, configura su equipo según la variable:

# En el evento de combate del rival
if $game_variables[7] == 1
  # Jugador tiene Planta → Rival tiene Fuego
  pbTrainerBattle(:RIVAL, "Azul", 0, nil, false, 0)
elsif $game_variables[7] == 2
  # Jugador tiene Fuego → Rival tiene Agua
  pbTrainerBattle(:RIVAL, "Azul", 0, nil, false, 1)
else
  # Jugador tiene Agua → Rival tiene Planta
  pbTrainerBattle(:RIVAL, "Azul", 0, nil, false, 2)
end

Cada versión del rival (0, 1, 2) tiene un equipo diferente definido en el PBS trainers.txt.

Configurar Variables para la Elección del Rival

Las variables que controlan la elección se definen de la siguiente manera:

Define estas variables y switches en RPG Maker XP (menú Database > System).

Selección Personalizada (Más de 3 Opciones)

Si quieres ofrecer más de tres iniciales, puedes hacerlo de varias formas:

Método 1: Más Poké Balls en la mesa

Simplemente añade más eventos de Poké Ball siguiendo el mismo patrón, aumentando las opciones de la variable:

# Ejemplo con 6 iniciales
# Variable = 1: Bulbasaur    Variable = 4: Chikorita
# Variable = 2: Charmander   Variable = 5: Cyndaquil
# Variable = 3: Squirtle     Variable = 6: Totodile

Método 2: Menú de selección por script

Para una selección más elegante con muchas opciones, puedes usar un script personalizado:

# Selección de inicial mediante menú
opciones = ["Bulbasaur", "Charmander", "Squirtle",
            "Chikorita", "Cyndaquil", "Totodile", "Cancelar"]
eleccion = pbMessage("Elige tu Pokémon inicial.", opciones, opciones.length)

especies = [:BULBASAUR, :CHARMANDER, :SQUIRTLE,
            :CHIKORITA, :CYNDAQUIL, :TOTODILE]

if eleccion < especies.length
  pbAddPokemon(especies[eleccion], 5)
  $game_variables[7] = eleccion + 1
  $game_switches[SWITCH_INICIAL_ELEGIDO] = true
end

Método 3: Selección aleatoria

Para un toque de sorpresa, puedes dar un inicial aleatorio:

# Inicial aleatorio
especies = [:BULBASAUR, :CHARMANDER, :SQUIRTLE]
aleatorio = rand(especies.length)
pbAddPokemon(especies[aleatorio], 5)
$game_variables[7] = aleatorio + 1
pbMessage("¡Has recibido a \\Pokemon[#{especies[aleatorio]}]!")
Nota: Recuerda que si cambias el número de iniciales, también debes ajustar la lógica del rival para que escoja correctamente. Si usas más de 3 iniciales y el rival debe tener ventaja de tipo, necesitarás crear más variantes del entrenador rival en trainers.txt.