Pokémon Errantes

Los Pokémon errantes (roaming Pokémon) son Pokémon salvajes que se mueven entre diferentes mapas del juego en lugar de permanecer en un lugar fijo. Cuando el jugador entra en un mapa donde se encuentra uno de estos Pokémon, hay una posibilidad de encontrarlo como un encuentro salvaje. Conservan su HP y estado entre encuentros, lo que los hace una mecánica desafiante e interesante para Pokémon legendarios.

Configuración en Settings

Los Pokémon errantes se definen en el archivo Settings mediante el array ROAMING_SPECIES. Cada entrada del array es un sub-array que contiene la información del Pokémon errante.

# En Settings
ROAMING_SPECIES = [
  [:ENTEI,    31, 25, "roaming BGM"],
  [:RAIKOU,   32, 25],
  [:SUICUNE,  33, 25],
  [:LATIAS,   34, 30],
  [:LATIOS,   35, 30]
]

Formato de cada entrada

Posición Descripción Ejemplo
1 Símbolo de la especie del Pokémon :ENTEI
2 Nivel del Pokémon 31
3 Número del interruptor (Game Switch) que activa este Pokémon errante 25
4 (Opcional) Música de batalla personalizada "roaming BGM"

Cada Pokémon errante se activa con un Game Switch diferente. Cuando activas ese interruptor, el Pokémon comienza a moverse por el mundo. Si lo capturas o derrotas, deja de aparecer aunque el interruptor siga activo.

Mapas donde puede aparecer

Los Pokémon errantes solo se mueven entre mapas que están definidos como rutas accesibles. Se definen mediante la constante ROAMING_AREAS:

# En Settings
ROAMING_AREAS = {
  # mapas conectados entre sí (IDs de mapa)
  5  => [6, 7, 21],      # Ruta 1 conecta con Ruta 2, Ruta 3 y Ciudad A
  6  => [5, 7, 8],       # Ruta 2 conecta con Ruta 1, Ruta 3 y Ruta 4
  7  => [5, 6, 9],       # Ruta 3 conecta con Ruta 1, Ruta 2 y Ruta 5
  8  => [6, 10],         # Ruta 4 conecta con Ruta 2 y Ruta 6
  9  => [7, 11],         # Ruta 5 conecta con Ruta 3 y Ruta 7
  10 => [8, 12],         # Ruta 6 conecta con Ruta 4 y Ruta 8
  11 => [9, 12],         # Ruta 7 conecta con Ruta 5 y Ruta 8
  12 => [10, 11]         # Ruta 8 conecta con Ruta 6 y Ruta 7
}

Solo los mapas listados en ROAMING_AREAS son válidos para los Pokémon errantes. Si un mapa no está listado, los errantes nunca aparecerán allí.

Nota: Los mapas de interior (cuevas, edificios, etc.) normalmente no se incluyen en ROAMING_AREAS, ya que los errantes suelen asociarse a rutas al aire libre.

Cómo funciona el movimiento

El sistema de Pokémon errantes sigue estas reglas:

  1. Cuando se activa el Game Switch de un errante, el Pokémon se coloca en un mapa aleatorio de los definidos en ROAMING_AREAS.
  2. Cada vez que el jugador cambia de mapa, todos los Pokémon errantes activos se mueven a un mapa adyacente al que estaban (elegido aleatoriamente).
  3. Si el jugador entra en un mapa donde hay un errante, hay una probabilidad de encontrarlo como encuentro salvaje (en hierba, cueva o agua, según lo que tenga el mapa).
  4. Si el jugador huye del combate o el Pokémon usa un movimiento de huida, el errante se mueve a otro mapa aleatorio.

Probabilidad de encuentro

Cuando el jugador y un Pokémon errante están en el mismo mapa, el Pokémon errante tiene una probabilidad fija de aparecer en cada encuentro salvaje que se genere. Esta probabilidad se puede ajustar:

# En Settings
ROAMING_POKEMON_CHANCE = 50  # Probabilidad (de 100) de que un errante reemplace un encuentro normal

Funciones principales

pbRoamPokemon(index)

Devuelve el objeto Pokémon del errante en la posición index del array ROAMING_SPECIES. Devuelve nil si el errante no ha sido creado todavía.

# Obtener el Pokémon errante del índice 0 (primer errante)
pokemon = pbRoamPokemon(0)
if pokemon
  pbMessage("El Pokémon errante tiene #{pokemon.hp} HP restantes.")
end

pbRoamPokemonOne(index)

Similar a pbRoamPokemon, pero fuerza la creación del Pokémon si no existe todavía. Útil para personalizar el errante antes de que aparezca.

# Crear y personalizar un errante
pokemon = pbRoamPokemonOne(0)
pokemon.shiny = true
pokemon.form = 1

Activar un Pokémon errante

# Activar el primer errante (Entei en el ejemplo)
# Simplemente activa el Game Switch correspondiente
$game_switches[25] = true

# También puedes verificar si un errante ya fue derrotado/capturado
if $PokemonGlobal.roamPokemonCaught[0]
  pbMessage("Ya capturaste a Entei.")
end

Desactivar un Pokémon errante

# Desactivar (detener) un errante
$game_switches[25] = false

# Eliminar completamente un errante (resetear)
$PokemonGlobal.roamPokemon[0]       = nil
$PokemonGlobal.roamPokemonCaught[0] = false
$game_switches[25] = false

HP y estado persistentes

Una característica clave de los Pokémon errantes es que conservan su HP y estados entre encuentros:

Nota: Mean Look, Bloqueo y habilidades como Trampa Arena evitan que el errante huya del combate, lo cual es útil para los jugadores.

Configurar un evento para errantes

Para activar un Pokémon errante en tu juego, necesitas un evento que active el Game Switch correspondiente. Aquí un ejemplo típico:

Evento: NPC que libera a los perros legendarios

# En un evento de RPG Maker (llamada de Script):
# Activar los tres perros legendarios como errantes
pbMessage("¡Los tres Pokémon legendarios han escapado!")
pbMessage("Ahora vagan por toda la región...")
$game_switches[25] = true   # Activa Entei
$game_switches[26] = true   # Activa Raikou
$game_switches[27] = true   # Activa Suicune
pbSetSelfSwitch("A", true)  # Evitar que el evento se repita

Evento: Verificar el estado de un errante

# Verificar si un errante específico sigue activo
pokemon = pbRoamPokemon(0)
if pokemon.nil?
  pbMessage("El Pokémon errante aún no ha sido activado.")
elsif $PokemonGlobal.roamPokemonCaught[0]
  pbMessage("Ya has capturado o derrotado a este Pokémon.")
else
  pbMessage("El Pokémon errante sigue vagando por la región.")
  pbMessage("Tiene #{pokemon.hp}/#{pokemon.totalhp} HP.")
end

Pokédex y localización

La Pokédex puede mostrar la ubicación de los Pokémon errantes en el mapa regional. Cuando el jugador ha encontrado al errante al menos una vez, su ubicación se muestra en la Pokédex como un marcador que cambia de posición.

Esto se gestiona automáticamente si el mapa donde está el errante tiene una posición definida en el mapa regional (en town_map.txt).

Comportamiento de huida

Por defecto, los Pokémon errantes tienen una alta probabilidad de huir del combate en cada turno. Este comportamiento se controla en el código de batalla:

Consejos y buenas prácticas