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).

Nota: Si no deseas que el Pokémon evolucione al intercambiarlo, puedes equiparle una Piedra Eterna (: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

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