Encuentros de Pesca
Los encuentros de pesca son un método de encuentro salvaje en Pokémon Essentials que permite al jugador encontrar Pokémon acuáticos usando una caña de pescar. Este sistema replica el comportamiento de la pesca en los juegos oficiales de Pokémon, donde existen tres tipos de cañas con diferentes pools de encuentro.
Este artículo explica cómo funciona el sistema de pesca, cómo configurar las tablas de encuentros de pesca en los archivos PBS, cómo definir los objetos de las cañas y cómo personalizar la mecánica de pesca.
Las Tres Cañas de Pescar
Pokémon Essentials incluye tres cañas de pescar por defecto, cada una con su propia tabla de encuentros y dificultad:
| Caña | Nombre Interno | Tipo de Encuentro | Descripción |
|---|---|---|---|
| Caña Vieja | OLDROD |
OldRod |
La caña más básica. Encuentra Pokémon de nivel bajo, generalmente Magikarp. |
| Caña Buena | GOODROD |
GoodRod |
Caña intermedia. Encuentra una variedad más amplia de Pokémon acuáticos. |
| Supercaña | SUPERROD |
SuperRod |
La mejor caña. Encuentra Pokémon raros y de nivel alto. |
Definición de los Objetos de Caña
Las cañas de pescar se definen como objetos en el archivo PBS/items.txt. Cada caña tiene un
uso en el campo que activa la mecánica de pesca:
# PBS/items.txt
[OLDROD]
Name = Caña Vieja
NamePlural = Cañas Viejas
Pocket = 8
Price = 0
FieldUse = Direct
Flags = KeyItem
Description = Una caña de pescar vieja y algo endeble. Sirve para pescar Pokémon en el agua.
[GOODROD]
Name = Caña Buena
NamePlural = Cañas Buenas
Pocket = 8
Price = 0
FieldUse = Direct
Flags = KeyItem
Description = Una caña de pescar de calidad decente que permite pescar una mayor variedad de Pokémon.
[SUPERROD]
Name = Supercaña
NamePlural = Supercañas
Pocket = 8
Price = 0
FieldUse = Direct
Flags = KeyItem
Description = La mejor caña de pescar. Permite pescar los Pokémon más raros y poderosos del agua.
Cada caña está marcada como KeyItem (objeto clave) para que no se pueda vender ni descartar. El
campo FieldUse = Direct indica que el objeto se usa directamente desde la mochila mientras el
jugador está en el campo.
Tablas de Encuentros de Pesca
Las tablas de encuentros de pesca se definen en el archivo PBS/encounters.txt, dentro de la
sección del mapa correspondiente. Cada tipo de caña tiene su propia lista de encuentros.
Formato del archivo PBS
# PBS/encounters.txt — Ejemplo para el mapa 005 (Ruta 6)
[005] # ID del mapa
Land,21
RATTATA,12,14
PIDGEY,12,14
ODDISH,13,15
Water,15
TENTACOOL,15,25
WINGULL,15,20
OldRod,2
MAGIKARP,5,15
GOLDEEN,5,10
GoodRod,3
MAGIKARP,10,20
GOLDEEN,10,20
POLIWAG,15,25
SHELLDER,15,20
SuperRod,5
GYARADOS,25,35
SEAKING,25,30
POLIWHIRL,25,30
CLOYSTER,30,35
STARYU,25,30
Cada sección de encuentro de pesca sigue este formato:
- Tipo de encuentro (OldRod, GoodRod, SuperRod) seguido de la densidad de encuentro (probabilidad base de que un Pokémon muerda el anzuelo).
- Cada línea posterior define una especie con su rango de nivel (nivel mínimo y máximo).
- La probabilidad de cada especie se distribuye según su posición en la lista (las primeras entradas son más comunes).
Distribución de probabilidades
Las probabilidades de encuentro para cada slot varían según el tipo de caña. El sistema de Essentials asigna probabilidades fijas según la cantidad de slots definidos:
| Slot | OldRod (2 slots) | GoodRod (3 slots) | SuperRod (5 slots) |
|---|---|---|---|
| 1 | 70% | 60% | 40% |
| 2 | 30% | 20% | 30% |
| 3 | — | 20% | 15% |
| 4 | — | — | 10% |
| 5 | — | — | 5% |
Esto significa que el primer Pokémon de la lista (slot 1) es siempre el más común, y los últimos son los más raros. Diseña tus tablas teniendo esto en cuenta.
La Mecánica de Pesca
Cuando el jugador usa una caña de pescar, se ejecuta la siguiente secuencia:
- Verificación de posición: El juego comprueba que el jugador esté mirando hacia un tile de agua. Si no hay agua enfrente, muestra un mensaje de error.
- Lanzamiento de la caña: Se muestra una animación del jugador lanzando la caña al agua.
- Espera del pique: El juego espera un tiempo aleatorio antes de que un Pokémon muerda el anzuelo. Durante esta espera, pueden ocurrir "falsos piques" que el jugador debe ignorar.
- Señal de pique: Cuando un Pokémon muerde, aparece el mensaje "¡Oh! ¡Un pique!" y el jugador debe pulsar el botón de acción rápidamente.
- Resultado: Si el jugador pulsa a tiempo, comienza la batalla contra el Pokémon pescado. Si no pulsa o pulsa en un falso pique, el Pokémon escapa.
Falsos piques
Los falsos piques son momentos en los que el texto "..." o "......" aparece pero no hay un pique real. Si el jugador pulsa el botón durante un falso pique, pierde el intento de pesca. La cantidad de falsos piques varía según la caña:
- Caña Vieja: 0-1 falsos piques.
- Caña Buena: 0-2 falsos piques.
- Supercaña: 0-4 falsos piques.
Configurar Eventos de Pesca
Aunque el sistema de pesca se activa automáticamente al usar una caña mirando al agua, en algunos casos querrás crear eventos de pesca especiales:
NPC que da una caña
# Evento de NPC pescador que regala la Caña Vieja
pbMessage("¡Hola! ¿Te gusta pescar?")
pbMessage("¡Toma! ¡Te regalo mi vieja caña de pescar!")
if pbReceiveItem(:OLDROD)
pbMessage("Para usarla, ábrela desde tu mochila mientras miras al agua.")
pbMessage("¡Buena suerte pescando!")
pbSetSelfSwitch(@event_id, "A", true)
end
Zona de pesca especial
Puedes crear zonas de pesca con tablas de encuentro únicas usando eventos que inician la pesca directamente:
# Evento de pesca especial (ej: estanque privado)
pbMessage("Este es un estanque especial de pesca.")
if pbConfirmMessage("¿Quieres pescar aquí?")
# Inicia pesca con una caña específica sin necesidad de que el jugador la tenga
pbFishing(true, 2) # 2 = SuperRod
end
Pesca en Cadena (Chain Fishing)
La pesca en cadena (chain fishing) es una mecánica presente en los juegos de Pokémon de la sexta generación en adelante, que aumenta las probabilidades de encontrar un Pokémon shiny al pescar de forma consecutiva sin fallar ni moverse.
Cómo funciona
- El jugador pesca y encuentra un Pokémon (no importa si lo captura, lo derrota o huye).
- Sin moverse de la posición actual, el jugador vuelve a pescar.
- Cada pesca exitosa consecutiva incrementa un contador de cadena.
- A mayor cadena, mayor probabilidad de encontrar un Pokémon shiny.
- La cadena se rompe si el jugador se mueve, falla una pesca o cierra el juego.
Implementación
En Pokémon Essentials estándar, la pesca en cadena no está implementada por defecto. Para añadirla, puedes usar el siguiente código como base:
# Sistema de pesca en cadena
# Añadir a los scripts del proyecto
class PokemonGlobalMetadata
attr_accessor :fishing_chain
end
# Incrementar cadena al pescar exitosamente
Events.onWildBattleEnd += proc { |_sender, e|
result = e[0] # Resultado de la batalla
if $PokemonGlobal.fishing_chain
if result != 3 # Si no huyó
$PokemonGlobal.fishing_chain += 1
end
end
}
# Resetear cadena al moverse
Events.onStepTaken += proc {
if $PokemonGlobal.fishing_chain && $PokemonGlobal.fishing_chain > 0
$PokemonGlobal.fishing_chain = 0
end
}
# Modificar probabilidad shiny según la cadena
Events.onWildPokemonCreate += proc { |_sender, e|
pokemon = e[0]
chain = $PokemonGlobal.fishing_chain || 0
if chain > 0
# Cada eslabón de la cadena suma ~1/200 de probabilidad shiny
shiny_rolls = [chain, 20].min # Máximo 20 intentos extra
shiny_rolls.times do
pokemon.shiny = true if rand(4096) == 0
end
end
}
Tabla de probabilidades con cadena
| Cadena | Probabilidad Shiny Aproximada |
|---|---|
| 0 (sin cadena) | 1/4096 (~0.024%) |
| 5 | ~1/683 |
| 10 | ~1/410 |
| 15 | ~1/273 |
| 20+ | ~1/205 |
Personalización del Minijuego de Pesca
Puedes personalizar varios aspectos de la mecánica de pesca:
Tiempo de espera
# Modificar el tiempo máximo de espera antes del pique
# En el script de pesca, busca la sección de timing:
FISHING_WAIT_MIN = 2 # Segundos mínimos de espera
FISHING_WAIT_MAX = 6 # Segundos máximos de espera
Ventana de reacción
# Tiempo que el jugador tiene para pulsar el botón al detectar el pique
FISHING_REACTION_TIME = 60 # Frames (60 = 1 segundo a 60 FPS)
Mensaje de pique personalizado
# Cambiar los mensajes de pesca
def pbFishingMessages
messages = {
cast: "Has lanzado la caña...",
wait: "...",
bite: "¡Oh! ¡Un pique!",
miss: "Se ha escapado...",
reel_in: "¡Has pescado un Pokémon!",
nothing: "Parece que no pica nada..."
}
return messages
end
Habilidades que Afectan la Pesca
Algunas habilidades Pokémon influyen en los encuentros de pesca:
| Habilidad | Efecto en Pesca |
|---|---|
| Ventosa (Suction Cups) | Aumenta la probabilidad de que un Pokémon muerda el anzuelo si el Pokémon con esta habilidad está primero en el equipo. |
| Viscosidad (Sticky Hold) | Mismo efecto que Ventosa: aumenta los piques. |
| Intimidación (Intimidate) | Reduce los encuentros con Pokémon de nivel bajo. |
| Presión (Pressure) | Aumenta la probabilidad de encontrar Pokémon de nivel alto. |
Definir Encuentros de Pesca por Mapa
Cada mapa puede tener sus propias tablas de encuentros de pesca. Es importante diseñar tablas coherentes con el tema del mapa:
Ejemplo: Ruta costera
[032] # Mapa: Ruta costera
OldRod,5
MAGIKARP,5,10
TENTACOOL,5,10
GoodRod,4
MAGIKARP,10,20
TENTACOOL,10,15
HORSEA,15,20
KRABBY,15,20
SuperRod,3
GYARADOS,30,40
TENTACRUEL,30,35
SEADRA,30,35
KINGLER,30,35
STARYU,25,35
Ejemplo: Lago tranquilo
[045] # Mapa: Lago tranquilo
OldRod,5
MAGIKARP,5,10
GOLDEEN,5,10
GoodRod,4
POLIWAG,15,20
GOLDEEN,15,20
PSYDUCK,15,20
SuperRod,3
POLIWHIRL,30,35
SEAKING,30,35
GOLDUCK,30,35
DRATINI,20,30
DRAGONAIR,30,40
Ejemplo: Cueva subterránea con agua
[078] # Mapa: Cueva submarina
OldRod,2
MAGIKARP,10,15
BARBOACH,10,15
GoodRod,3
BARBOACH,15,25
WHISCASH,20,25
CORPHISH,15,20
SuperRod,2
WHISCASH,30,40
CRAWDAUNT,30,40
FEEBAS,20,25
Resolución de Problemas
No aparece ningún Pokémon al pescar
- Verifica que el mapa actual tiene definidas tablas de encuentro de pesca en
encounters.txt. - Comprueba que el tipo de caña usado (OldRod, GoodRod, SuperRod) tiene entradas en el mapa.
- Asegúrate de que el jugador mira hacia un tile de agua al usar la caña.
- Verifica que la densidad de encuentro no sea 0.
Siempre aparece el mismo Pokémon
- Revisa que tienes más de una especie en la tabla de encuentros.
- Aumenta la proporción de los Pokémon menos comunes si deseas más variedad.
- Recuerda que los primeros slots son más frecuentes que los últimos.
La caña no funciona desde la mochila
- Verifica que el objeto tiene
FieldUse = Directenitems.txt. - Comprueba que el script de uso de la caña (
ItemHandlers::UseFromBag) está correctamente definido para la caña. - Asegúrate de que la caña está en el bolsillo correcto de la mochila.
Los niveles de los Pokémon pescados son incorrectos
- Revisa el rango de niveles definido en las tablas de
encounters.txt. - El nivel se genera aleatoriamente entre el mínimo y máximo especificados.
- Habilidades como Presión pueden alterar los niveles de los Pokémon encontrados.