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í.
Cómo funciona el movimiento
El sistema de Pokémon errantes sigue estas reglas:
- Cuando se activa el Game Switch de un errante, el Pokémon se coloca en un mapa aleatorio de los definidos en
ROAMING_AREAS. - 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).
- 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).
- 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:
- Si el jugador le quita HP al errante y luego este huye, la próxima vez que lo encuentre tendrá el mismo HP reducido.
- Los estados alterados (paralizado, dormido, envenenado, etc.) también se conservan.
- Esto permite que el jugador debilite progresivamente al errante para capturarlo más fácilmente.
- Si el Pokémon errante es derrotado (HP llega a 0), se marca como capturado/derrotado y ya no aparece más.
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:
- El errante intenta huir al inicio de cada turno (antes de que el jugador actúe).
- Movimientos como Mean Look, Bloqueo (Block) y Tela Araña (Spider Web) impiden la huida.
- La habilidad Trampa Arena (Arena Trap) impide la huida de errantes terrestres.
- La habilidad Sombra Trampa (Shadow Tag) impide la huida de cualquier errante.
Consejos y buenas prácticas
- Usa los Pokémon errantes para legendarios o Pokémon especiales que quieras que sean un desafío encontrar.
- Asegúrate de que hay suficientes mapas en
ROAMING_AREASpara que los errantes tengan espacio donde moverse. - Proporciona al jugador alguna manera de rastrear al errante (Pokédex, NPC que da pistas, etc.).
- Considera ofrecer al jugador movimientos o Pokémon con habilidades anti-huida antes de introducir errantes.
- No actives demasiados errantes a la vez — puede ser frustrante para el jugador.
- Puedes usar el menú Debug > Roaming Pokémon para probar el sistema durante el desarrollo.