Intercambio de Pokémon
Los intercambios de Pokémon en La Base de Sky permiten al jugador intercambiar Pokémon con NPCs del juego. Este sistema simula los intercambios en el juego (in-game trades) que existen en los juegos oficiales, donde un NPC ofrece un Pokémon específico a cambio de otro.
Intercambio básico con NPC
El método principal para realizar un intercambio con un NPC es pbStartTrade. Este método se
utiliza dentro de un evento de RPG Maker XP.
Sintaxis
pbStartTrade(pokemon_index, especie, mote, nombre_entrenador)
| Parámetro | Tipo | Descripción |
|---|---|---|
pokemon_index |
Integer | Índice del Pokémon seleccionado por el jugador en su equipo (obtenido con
pbChooseTradablePokemon).
|
especie |
Symbol | La especie del Pokémon que el NPC ofrecerá a cambio (ej: :HAUNTER). |
mote |
String | El mote (apodo) que tendrá el Pokémon recibido. Usar nil para el nombre por defecto de la
especie. |
nombre_entrenador |
String | El nombre del Entrenador Original (OT) del Pokémon que recibiremos. |
Ejemplo completo de intercambio
A continuación se muestra un ejemplo completo de cómo configurar un evento de intercambio en RPG Maker XP. El NPC pide un Abra a cambio de un Haunter.
Paso 1: Configurar el evento
Crea un evento en el mapa y añade las siguientes páginas de evento con comandos de Llamar Script y Mensaje:
# Página 1 del evento (antes del intercambio)
# Mensaje del NPC
pbMessage(_INTL("¡Hola! Me encantan los Pokémon de tipo Psíquico."))
pbMessage(_INTL("¿Tendrías un Abra para cambiarme?"))
pbMessage(_INTL("Te daré mi Haunter a cambio."))
# Preguntar al jugador si quiere intercambiar
if pbConfirmMessage(_INTL("¿Quieres intercambiar?"))
# El jugador elige un Pokémon intercambiable
pbChooseTradablePokemon(1, 2)
# Verificar que eligió un Pokémon (no canceló)
if pbGet(1) >= 0
# Verificar que el Pokémon elegido es un Abra
if $player.party[pbGet(1)].isSpecies?(:ABRA)
# Realizar el intercambio
pbStartTrade(pbGet(1), :HAUNTER, "Sombra", "Gastón")
pbMessage(_INTL("¡Gracias por el Abra! Cuida bien de Haunter."))
# Activar un switch para que el evento no se repita
pbSetSelfSwitch("A", true)
else
pbMessage(_INTL("¡Mmm, eso no es un Abra!"))
pbMessage(_INTL("Necesito un Abra. Vuelve cuando tengas uno."))
end
else
pbMessage(_INTL("Bueno, será en otra ocasión."))
end
else
pbMessage(_INTL("¡Vuelve si cambias de opinión!"))
end
# Página 2 del evento (Self Switch A activado)
pbMessage(_INTL("¿Cómo va Haunter? ¡Espero que lo estés cuidando bien!"))
Personalizar el Pokémon del intercambio
Para tener más control sobre el Pokémon que el NPC ofrece, se puede crear el Pokémon manualmente antes del intercambio:
# Crear un Pokémon personalizado para el intercambio
pkmn = Pokemon.new(:HAUNTER, 25)
pkmn.name = "Sombra" # Mote
pkmn.owner = Pokemon::Owner.new(12345, "Gastón", 0, 0) # OT personalizado
pkmn.item = :EVERSTONE # Objeto equipado
pkmn.shiny = true # Hacerlo shiny
pkmn.iv[:HP] = 31 # IVs personalizados
pkmn.iv[:ATTACK] = 31
pkmn.iv[:DEFENSE] = 31
pkmn.calc_stats # Recalcular estadísticas
# Obtener índice del Pokémon elegido por el jugador
pbChooseTradablePokemon(1, 2)
if pbGet(1) >= 0
# Intercambiar directamente
$player.party[pbGet(1)] = pkmn
pbMessage(_INTL("¡Intercambio completado!"))
end
Verificar especie para el intercambio
Es importante verificar que el jugador posea la especie correcta antes de intentar el intercambio. Existen varias formas de hacer esto:
# Método 1: Verificar después de la selección
pbChooseTradablePokemon(1, 2)
if pbGet(1) >= 0
pkmn = $player.party[pbGet(1)]
if pkmn.isSpecies?(:ABRA)
# Proceder con el intercambio
else
pbMessage(_INTL("Necesito un {1}, no un {2}.",
GameData::Species.get(:ABRA).name, pkmn.name))
end
end
# Método 2: Filtrar la selección para mostrar solo la especie deseada
pbChooseTradablePokemon(1, 2, proc { |pkmn|
pkmn.isSpecies?(:ABRA)
})
if pbGet(1) >= 0
pbStartTrade(pbGet(1), :HAUNTER, "Sombra", "Gastón")
end
Evolución tras intercambio
Los Pokémon que evolucionan por intercambio (como Haunter → Gengar, Kadabra → Alakazam) evolucionarán
automáticamente después de completar el intercambio con pbStartTrade, tanto para el Pokémon que el
jugador recibe como para el que entrega.
Si el Pokémon recibido tiene un método de evolución Trade o TradeItem, la evolución
se activará automáticamente. Esto significa que si el NPC ofrece un Haunter, el jugador recibirá un Gengar (si
Haunter tiene Trade como método de evolución).
:EVERSTONE) o simplemente no definir Trade como método de evolución para esa
especie.
Intercambio desde el PC (La Base de Sky)
La Base de Sky añade una funcionalidad exclusiva: la posibilidad de realizar intercambios de Pokémon desde el PC de almacenamiento. Esta característica está inspirada en el sistema de intercambio del Condominio Lugano de los juegos oficiales.
¿Cómo funciona?
En lugar de requerir que el Pokémon esté en el equipo del jugador, el sistema permite seleccionar un Pokémon directamente del PC para intercambiarlo con un NPC. Esto es especialmente útil cuando el equipo del jugador está completo y no quiere reorganizarlo.
Configurar un intercambio desde el PC
La Base de Sky proporciona métodos adicionales para gestionar intercambios desde el almacenamiento:
# Intercambio donde el jugador puede elegir desde el PC
# El NPC ofrece un Mr. Mime a cambio de un Abra
pbMessage(_INTL("¿Tienes un Abra? Te cambio mi Mr. Mime."))
if pbConfirmMessage(_INTL("¿Quieres hacer el intercambio?"))
# Verificar si el jugador tiene un Abra (en equipo o PC)
if $player.has_species?(:ABRA)
# Implementación del intercambio desde PC
pbMessage(_INTL("¡Selecciona el Abra que quieras intercambiar!"))
# Abre la interfaz de selección del PC filtrada
pbStartTrade(pbGet(1), :MR_MIME, "Mimito", "Lucía")
else
pbMessage(_INTL("Parece que no tienes ningún Abra..."))
end
end
Tabla de intercambios de ejemplo
A continuación se muestra una tabla con ejemplos de intercambios típicos que podrían implementarse en un juego:
| NPC | Ubicación | Pide | Ofrece | Mote | Nivel |
|---|---|---|---|---|---|
| Gastón | Ciudad Celeste | Abra | Haunter | Sombra | Igual al Pokémon dado |
| Lucía | Pueblo Lavanda | Poliwhirl | Jynx | Óscar | Igual al Pokémon dado |
| Marcos | Ruta 5 | Nidoran♀ | Nidoran♂ | Terry | Igual al Pokémon dado |
| Elena | Centro Pokémon | Onix | Steelix | Rocky | Igual al Pokémon dado |
Consejos y buenas prácticas
- Usa Self Switches: Siempre activa un Self Switch tras completar un intercambio para evitar que el jugador repita el intercambio infinitamente.
- Verifica la especie: Siempre comprueba que el Pokémon seleccionado sea de la especie
correcta antes de llamar a
pbStartTrade. - Mensaje post-intercambio: Añade diálogo diferente para la segunda página del evento (después del intercambio), donde el NPC pregunte cómo está el Pokémon intercambiado.
- Nivel del Pokémon: El Pokémon ofrecido por
pbStartTradese genera al mismo nivel que el Pokémon entregado por el jugador. - OT y bonus de experiencia: Los Pokémon obtenidos por intercambio tienen un OT diferente al del jugador, por lo que reciben un bonus de experiencia del 50% en combate.
- Pokémon con objeto: Si quieres que el Pokémon intercambiado llegue con un objeto, usa el método de creación manual descrito arriba.
Intercambio con animación
El método pbStartTrade incluye automáticamente la animación de intercambio (las Poké Balls
viajando entre los dos entrenadores). Esta animación se puede personalizar editando los gráficos en
Graphics/Pictures/Trade/.
# Archivos de gráficos del intercambio:
# Graphics/Pictures/Trade/trade_background.png - Fondo de la escena
# Graphics/Pictures/Trade/trade_card.png - Tarjeta de información
# Graphics/Pictures/Trade/trade_ball.png - Poké Ball en movimiento