Manipular Pokémon
Esta página explica cómo agregar, eliminar, contar y seleccionar Pokémon del equipo del jugador a través de scripts en La Base de Sky. Todos los métodos descritos aquí se utilizan principalmente dentro de eventos de RPG Maker XP mediante el comando Llamar Script.
El equipo del jugador
El equipo del jugador se almacena en el array $player.party. Este array contiene entre 0 y 6
objetos de la clase Pokemon. Cada posición del array representa un slot del equipo (índice 0 =
primer Pokémon, índice 5 = sexto Pokémon).
| Propiedad / Método | Descripción |
|---|---|
$player.party |
Devuelve el array con todos los Pokémon del equipo. |
$player.party_count |
Devuelve la cantidad de Pokémon en el equipo (equivale a $player.party.length). |
$player.party_full? |
Devuelve true si el equipo tiene 6 Pokémon. |
$player.party[0] |
Accede al primer Pokémon del equipo. |
$player.pokemon_count |
Devuelve el número total de Pokémon del jugador (equipo + PC). |
Agregar Pokémon al equipo
Existen varias formas de agregar un Pokémon al equipo del jugador. La diferencia principal entre ellas es la cantidad de información que muestran al jugador.
pbAddPokemon
Agrega un Pokémon al equipo del jugador mostrando un mensaje de obtención y registrando la especie en la Pokédex. Si el equipo está lleno, el Pokémon se envía al PC automáticamente.
# Agregar un Pikachu de nivel 15
pbAddPokemon(:PIKACHU, 15)
# Agregar un Pokémon con un objeto equipado
pkmn = Pokemon.new(:EEVEE, 20)
pkmn.item = :THUNDERSTONE
pbAddPokemon(pkmn)
Este método devuelve true si el Pokémon fue agregado exitosamente.
pbAddToPartySilent
Agrega un Pokémon al equipo de forma silenciosa, sin mostrar ningún mensaje ni registrar la especie en la
Pokédex. Si el equipo está lleno, el Pokémon no se agrega y el método devuelve false.
# Agregar un Pokémon silenciosamente
pbAddToPartySilent(:BULBASAUR, 10)
# Agregar un Pokémon con propiedades personalizadas
pkmn = Pokemon.new(:CHARMANDER, 5)
pkmn.shiny = true
pbAddToPartySilent(pkmn)
pbAddPokemonSilent
Similar a pbAddToPartySilent, pero si el equipo está lleno, el Pokémon se envía al PC
automáticamente (también sin mostrar ningún mensaje).
# Agregar silenciosamente, con posibilidad de ir al PC
pbAddPokemonSilent(:SQUIRTLE, 10)
Tabla comparativa
| Método | Muestra mensaje | Registra en Pokédex | Envía al PC si equipo lleno |
|---|---|---|---|
pbAddPokemon |
Sí | Sí | Sí |
pbAddPokemonSilent |
No | No | Sí |
pbAddToPartySilent |
No | No | No (devuelve false) |
Eliminar Pokémon del equipo
Para quitar Pokémon del equipo del jugador se utiliza pbRemovePokemonAt.
# Eliminar el Pokémon en la posición 0 (el primero)
pbRemovePokemonAt(0)
# Eliminar el último Pokémon del equipo
pbRemovePokemonAt($player.party_count - 1)
Otros métodos de eliminación
| Método | Descripción |
|---|---|
$player.remove_pokemon_at_index(index) |
Elimina el Pokémon del equipo en el índice especificado. |
$player.party.delete_at(index) |
Método directo de Ruby para eliminar un elemento del array. Usar con precaución. |
Seleccionar Pokémon
Estos métodos abren la pantalla de selección del equipo y permiten al jugador elegir un Pokémon. Son útiles para eventos donde se necesita que el jugador seleccione un Pokémon específico (por ejemplo, para un intercambio o una acción especial).
pbChoosePokemon
Abre la pantalla de selección y permite al jugador elegir cualquier Pokémon de su equipo. Guarda el índice del Pokémon seleccionado en una variable del juego.
# El jugador elige un Pokémon, el índice se guarda en la variable 1
pbChoosePokemon(1, 2)
# Variable 1 = índice del Pokémon elegido (0-5), o -1 si canceló
# Variable 2 = nombre del Pokémon elegido
pbChooseAblePokemon
Similar a pbChoosePokemon, pero solo permite seleccionar Pokémon que no estén debilitados (HP > 0)
y que no sean Huevos.
# Solo Pokémon aptos para combatir
pbChooseAblePokemon(1, 2)
pbChooseTradablePokemon
Solo permite seleccionar Pokémon que pueden ser intercambiados (no Huevos, no Pokémon con Mail).
# Solo Pokémon intercambiables
pbChooseTradablePokemon(1, 2)
Selección con filtro personalizado
Se puede usar un bloque de código para filtrar aún más los Pokémon que aparecen como seleccionables:
# Solo permitir seleccionar Pokémon de tipo Fuego
pbChoosePokemon(1, 2, proc { |pkmn|
pkmn.hasType?(:FIRE)
})
Dar y quitar objetos a Pokémon
Cada Pokémon puede llevar un objeto equipado. Los siguientes scripts permiten gestionar estos objetos:
# Dar un objeto al primer Pokémon
$player.party[0].item = :LEFTOVERS
# Quitar el objeto del primer Pokémon
$player.party[0].item = nil
# Comprobar si un Pokémon lleva un objeto
if $player.party[0].hasItem?(:LEFTOVERS)
pbMessage("¡Este Pokémon lleva Restos!")
end
# Obtener el objeto que lleva un Pokémon
item = $player.party[0].item # Devuelve el símbolo del objeto, o nil
Comprobar especies en el equipo
Para verificar si el jugador tiene una especie específica en su equipo:
# Comprobar si el jugador tiene un Pikachu en el equipo
if $player.has_species?(:PIKACHU)
pbMessage("¡Tienes un Pikachu en tu equipo!")
end
# Contar cuántos Pokémon de una especie hay en el equipo
count = 0
$player.party.each { |pkmn| count += 1 if pkmn.isSpecies?(:EEVEE) }
# Comprobar si algún Pokémon del equipo conoce un movimiento
if $player.has_pokemon_with_move?(:FLY)
pbMessage("Un Pokémon de tu equipo puede usar Vuelo.")
end
Curar Pokémon
Para curar los Pokémon del equipo:
# Curar todos los Pokémon del equipo completamente
$player.party.each { |pkmn| pkmn.heal }
# Curar solo el primer Pokémon
$player.party[0].heal
# Restaurar solo los PS de un Pokémon
$player.party[0].hp = $player.party[0].totalhp
# Restaurar solo los PP de todos los movimientos
$player.party[0].moves.each { |m| m.pp = m.total_pp }
Información útil del Pokémon
| Propiedad | Descripción | Ejemplo |
|---|---|---|
pkmn.species |
Símbolo de la especie | :PIKACHU |
pkmn.name |
Nombre (o mote) del Pokémon | "Pikachu" |
pkmn.level |
Nivel actual | 25 |
pkmn.hp |
PS actuales | 60 |
pkmn.totalhp |
PS máximos | 80 |
pkmn.fainted? |
Si está debilitado | true / false |
pkmn.egg? |
Si es un Huevo | true / false |
pkmn.shiny? |
Si es shiny | true / false |
pkmn.ability |
Habilidad actual | :STATIC |
pkmn.nature |
Naturaleza | :JOLLY |
pkmn.gender |
Género (0=macho, 1=hembra, 2=sin género) | 0 |
pkmn.owner.name |
Nombre del Entrenador Original | "Red" |
Iterar sobre el equipo
Se puede recorrer el equipo completo para realizar operaciones en todos los Pokémon:
# Subir 5 niveles a todos los Pokémon del equipo
$player.party.each do |pkmn|
next if pkmn.egg? # Saltar huevos
pbChangeLevel(pkmn, pkmn.level + 5, nil)
end
# Hacer que todos los Pokémon del equipo sean shiny
$player.party.each do |pkmn|
next if pkmn.egg?
pkmn.shiny = true
end
# Encontrar el Pokémon de mayor nivel
mejor = $player.party.max_by { |pkmn| pkmn.level }
pbMessage("Tu Pokémon de mayor nivel es #{mejor.name} (Nv. #{mejor.level}).")